Files
ppg-modkit/parsing_docs/index.html

382 lines
26 KiB
HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.2/styles/vs2015.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.2/highlight.min.js"></script>
<script src="/searchIndex.js"></script>
<script>
hljs.initHighlightingOnLoad();
</script>
<title>People Playground Modding - Home</title>
<link rel="shortcut icon" href="/media/icon.png" type="image/png">
<script>
function fetchToElem(path, elem, oncomplete) {
fetch(path, {
method: "GET"
}).then(d => d.text()).then(result => {
elem.textContent = result;
if (oncomplete)
oncomplete();
})
}
</script>
<style>
html,
body {
font-family: 'Inter', sans-serif;
margin: 5px;
}
.content {
/* max-width: 1900px; */
margin-left: auto;
margin-right: auto;
display: grid;
grid-template-columns: 310px 1fr 160px;
grid-template-rows: 24px auto;
justify-items: stretch;
align-items: start;
grid-gap: 6px;
grid-template-areas: "sidebar breadcrumbs search" "sidebar page page";
height: 100%;
}
.logo {
width: 100%;
height: 128px;
background-size: contain;
background-position: center;
background-repeat: no-repeat;
}
.sidebar {
background-color: rgb(250, 250, 250);
padding: 25px;
font-size: 100%;
grid-area: sidebar;
margin-right: 8px;
align-self: stretch;
}
.sidebar-links {
margin-top: 10px;
display: block;
overflow-x: hidden;
}
.sidebar-links * {
display: block;
margin: 0;
margin-bottom: 10px;
}
.sidebar-links a {
color: rgb(35, 35, 245);
text-decoration: none;
}
.sidebar-links a:hover {
text-decoration: underline;
}
.sidebar>.title {
font-weight: bold;
font-size: 125%;
text-align: center;
margin-bottom: 5px;
}
.sidebar-links span {
display: block;
}
.sidebar-links>span span {
padding-left: 10px;
border-left: 1px solid rgb(200, 200, 200);
}
.page {
grid-area: page;
position: relative;
}
.page .obsolete-message {
display: none;
}
.page.obsolete-member .obsolete-message {
display: block;
background: #d42c5e;
color: white;
width: 250px;
height: min-content;
padding: 10px;
position: absolute;
right: 20px;
top: 20px;
opacity: 90%;
}
.obsolete-message p {
margin: 5px 0;
}
.page.obsolete-member {
box-shadow: inset rgba(0, 0, 0, 0.25) 0px -3px 16px 0px;
background-color: whitesmoke;
}
.page.obsolete-member>*:not(.obsolete-message) {
transform: rotateZ(1deg);
filter: saturate(70%);
}
.page code:not(.hljs) {
font-size: 115%;
color: #d42c5e;
}
.search {
grid-area: search;
}
.search>input {
width: 100%;
font-family: inherit;
border: 1px solid gray;
outline: none;
padding: 3px;
}
.breadcrumbs {
grid-area: breadcrumbs;
}
.breadcrumbs>* {
text-decoration: none;
color: gray;
}
.breadcrumbs>*:not(:first-child)::before {
content: "> ";
}
.search-results {
display: none;
}
.search-results>a {
display: block;
margin-bottom: 10px;
}
.dim {
opacity: 0.5;
}
#table-of-contents {
padding: 10px;
display: inline-block;
border: 1px solid gray;
}
blockquote {
color: #FF0061;
font-style: italic;
}
</style>
<script>
function createTableOfContents(containingElement) {
const headers = document.querySelectorAll("h2, h3, h4, h5");
const title = document.createElement("span");
title.innerHTML = "<b>Contents</b>";
containingElement.appendChild(title);
for (const header of headers) {
let offset = 0;
switch (header.tagName.toLowerCase()) {
case "h2":
offset = 10;
break;
case "h3":
offset = 20;
break;
case "h4":
offset = 30;
break;
case "h5":
offset = 40;
break;
}
const elem = document.createElement("a");
elem.style.display = "block";
elem.style.marginLeft = offset + "px";
elem.href = window.location.pathname + "#" + header.id;
elem.innerText = header.innerText;
containingElement.appendChild(elem);
}
}
</script>
</head>
<body>
<div class="content">
<div class="sidebar">
<div class="logo" style="background-image: url(/media/icon.png)"></div>
<div class="title">People Playground Modding</div>
<div class="sidebar-link-wrapper">
<div class="sidebar-links">
<span><a href="/index.html">Home</a><span></span><a href="/intro.html">Introduction</a><span><a href="/intro/fileStructure.html">File Structure</a><span></span><a href="/intro/boilerplate.html">Empty mod template</a><span></span></span><a href="/details.html">Details</a><span><a href="/details/layers.html">Layers</a><span></span><a href="/details/lifecycle.html">Mod Lifecycle</a><span></span><a href="/details/meta.html">Metadata</a><span></span><a href="/details/readme.html">Extended mod description</a><span></span><a href="/details/scriptFiles.html">Script Files</a><span></span><a href="/details/shadyCodeRejection.html">Shady Code Rejection</a><span></span><a href="/details/unity.html">The Unity Engine</a><span></span><a href="/details/builtInComponents.html">Built-in components</a><span></span></span><a href="/gameAssets.html">Game assets</a><span></span><a href="/tutorials.html">Tutorials</a><span><a href="/tutorials/tutorialCreatingMod.html">Creating a mod</a><span></span><a href="/tutorials/tutorialCustomItem.html">Creating a custom item</a><span></span><a href="/tutorials/tutorialCustomBehaviour.html">Creating a custom behaviour</a><span></span><a href="/tutorials/tutorialCustomSyringe.html">Creating a custom syringe</a><span></span><a href="/tutorials/tutorialCustomLiquid.html">Creating a custom liquid</a><span></span><a href="/tutorials/tutorialCustomGun.html">Creating a gun with a custom projectile</a><span></span><a href="/tutorials/tutorialCustomAttachment.html">Creating a custom weapon attachment</a><span></span><a href="/tutorials/tutorialSerialisation.html">Saving, loading, copying, and pasting</a><span></span><a href="/tutorials/tutorialMixing.html">Custom liquid mixers</a><span></span></span><a href="/snippets.html">Code snippets</a><span><a href="/snippets/cartridges.html">Cartridges</a><span></span><a href="/snippets/materials.html">Materials</a><span></span><a href="/snippets/particles.html">Particle effects</a><span></span><a href="/snippets/physicalProperties.html">Physical properties</a><span></span><a href="/snippets/spawnables.html">Spawnable items</a><span></span><a href="/snippets/activation.html">Activation action</a><span></span><a href="/snippets/assignTextures.html">Random sprite assignment</a><span></span><a href="/snippets/backgroundScriptCreation.html">Creating a background script</a><span></span><a href="/snippets/changeEnvironmentSettings.html">Change environment settings</a><span></span><a href="/snippets/createExplosion.html">Create an explosion</a><span></span><a href="/snippets/createLight.html">Creating a light</a><span></span><a href="/snippets/customHuman.html">Custom human sprite</a><span></span><a href="/snippets/debug.html">Debug drawing</a><span></span><a href="/snippets/editingExistingItems.html">Editing pre-existing items</a><span></span><a href="/snippets/entrypoint.html">Empty entry point</a><span></span><a href="/snippets/eventListening.html">Listen for events</a><span></span><a href="/snippets/mapId.html">Map IDs</a><span></span><a href="/snippets/registerItem.html">Registering an item</a><span></span><a href="/snippets/simpleGun.html">Adding a firearm</a><span></span><a href="/snippets/spawnParticle.html">Spawn particles on activation</a><span></span><a href="/snippets/texturePackSystem.html">Basic texture pack system</a><span></span></span><a href="/internalReference.html">Source documentation</a><span><a href="/internalReference/AcceleratorBoltBehaviour.html">AcceleratorBoltBehaviour</a><span></span><a href="/internalReference/AcceleratorGunBehaviour.html">AcceleratorGunBehaviour</a><span></span><a href="/internalReference/AcidPoison.html">AcidPoison</a><span></span><a href="/internalReference/AcidPoolBehaviour.html">AcidPoolBehaviour</a><span></span><a href="/internalReference/AcidSyringe.html">AcidSyringe</a><span></span><a href="/internalReference/AcidSyringe_AcidLiquid.html">AcidSyringe.AcidLiquid</a><span></span><a href="/internalReference/ActionCategory.html">ActionCategory</a><span></span><a href="/internalReference/ActionControlBehaviour.html">ActionControlBehaviour</a><span></span><a href="/internalReference/ActionRepresentation.html">ActionRepresentation</a><span></span><a href="/internalReference/ActionUniverse.html">ActionUniverse</a><span></span><a href="/internalReference/ActivateIfExpandedGore.html">ActivateIfExpandedGore</a><span></span><a href="/internalReference/ActivateIfTutorial.html">ActivateIfTutorial</a><span></span><a href="/internalReference/ActivationEvent.html">Activations.ActivationEvent</a><span></span><a href="/internalReference/ActivationEventType.html">Activations.ActivationEventType</a><span></span><a href="/internalReference/ActivationPropagation.html">ActivationPropagation</a><span></span><a href="/internalReference/ActivationSource.html">Activations.ActivationSource</a><span></span><a href="/internalReference/ActivationTarget.html">Activations.ActivationTarget</a><span></span><a href="/internalReference/ActivationToggleBehaviour.html">ActivationToggleBehaviour</a><span></span><a href="/internalReference/ActivationTransformerBehaviour.html">ActivationTransformerBehaviour</a><span></span><a href="/internalReference/ActivatorElectrodeBehaviour.html">ActivatorElectrodeBehaviour</a><span></span><a href="/internalReference/ActiveSettingIfNotVsync.html">ActiveSettingIfNotVsync</a><span></span><a href="/internalReference/ActOnBlast.html">ActOnBlast</a><span></span><a href="/internalReference/ActOnCollide.html">ActOnCollide</a><span></span><a href="/internalReference/ActOnDestroy.html">ActOnDestroy</a><span></span><a href="/internalReference/ActOnDisintegrate.html">ActOnDisintegrate</a><span></span><a href="/internalReference/ActOnHingeJointLimit.html">ActOnHingeJointLimit</a><span></span><a href="/internalReference/ActOnShot.html">ActOnShot</a><span></span><a href="/internalReference/ActOnSliderJointLimit.html">ActOnSliderJointLimit</a><span></span><a href="/internalReference/ActOnUserDelete.html">ActOnUserDelete</a><span></span><a href="/internalReference/AddForceBehaviour.html">AddForceBehaviour</a><span></span><a href="/internalReference/AdhesiveCouplerBehaviour.html">AdhesiveCouplerBehaviour</a><span></span><a href="/internalReference/AdhesiveCouplerBehaviour_Connection.html">AdhesiveCouplerBehaviour.Connection</a><span></span><a href="/internalReference/AdrenalinePoison.html">AdrenalinePoison</a><span></span><a href="/internalReference/AdrenalineSyringe.html">AdrenalineSyringe</a><span></span><a href="/internalReference/AdrenalineSyringe_AdrenalineLiquid.html">AdrenalineSyringe.AdrenalineLiquid</a><span></span><a href="/internalReference/AerialFaithPlateBehaviour.html">AerialFaithPlateBehaviour</a><span></span><a href="/internalReference/AirfoilBehaviour.html">AirfoilBehaviour</a><span></span><a href="/internalReference/AirfoilBehaviour_WingType.html">AirfoilBehaviour.WingType</a><span></span><a href="/internalReference/AliveBehaviour.html">AliveBehaviour</a><span></span><a href="/internalReference/AmbientTemperatureGridBehaviour.html">AmbientTemperatureGridBehaviour</a><span></span><a href="/internalReference/AmbientTemperatureGridBehaviour_Cell.html">AmbientTemperatureGridBehaviour.Cell</a><span></span><a href="/internalReference/AndroidLaserBehaviour.html">AndroidLaserBehaviour</a><span></span><a href="/internalReference/AndroidSparkCreator.html">AndroidSparkCreator</a><span></span><a href="/internalReference/AntiAliasing.html">AntiAliasing</a><span></span><a href="/internalReference/AntiAliasingRadioButton.html">AntiAliasingRadioButton</a><span></span><a href="/internalReference/AOEPowerTool.html">AOEPowerTool</a><span></span><a href="/internalReference/AppearWhenMouseNear.html">AppearWhenMouseNear</a><span></span><a href="/internalReference/ApplicationQuitButtonBehaviour.html">ApplicationQuitButtonBehaviour</a><span></span><a href="/internalReference/AppliedBandageBehaviour.html">AppliedBandageBehaviour</a><span></span><a href="/internalReference/ArchelixCasterBehaviour.html">ArchelixCasterBehaviour</a><span></span><a href="/internalReference/ArchelixCasterBoltBehaviour.html">ArchelixCasterBoltBehaviour</a><span></span><a href="/internalReference/ArrayCloner.html">ArrayCloner</a><span></span><a href="/internalReference/AtomBombBehaviour.html">AtomBombBehaviour</a><span></span><a href="/internalReference/AtomBombExplosionBehaviour.html">AtomBombExplosionBehaviour</a><span></span><a href="/internalReference/AudioSourceTimeScaleBehaviour.html">AudioSourceTimeScaleBehaviour</a><span></span><a href="/internalReference/AudioSourceToggleBehaviour.html">AudioSourceToggleBehaviour</a><span></span><a href="/internalReference/AutoCompleteSearchType.html">UnityEngine.UI.Extensions.AutoCompleteSearchType</a><span></span><a href="/internalReference/AutomaticSentryController.html">AutomaticSentryController</a><span></span><a href="/internalReference/AutomaticWheelJointCreator.html">AutomaticWheelJointCreator</a><span></span><a href="/internalReference/BackgroundItemLoader.html">BackgroundItemLoader</a><span></span><a href="/internalReference/BackgroundItemLoaderStatusBehaviour.html">BackgroundItemLoaderStatusBehaviour</a><span></span><a href="/internalReference/BallisticsEmitter.html">BallisticsEmitter</a><span></span><a href="/internalReference/BallisticsEmitter_CallbackParams.html">BallisticsEmitter.CallbackParams</a><span></span><a href="/internalReference/BalloonBehaviour.html">BalloonBehaviour</a><span></span><a href="/internalReference/BandageBehaviour.html">BandageBehaviour</a><span></span><a href="/internalReference/BandageWireTool.html">BandageWireTool</a><span></span><a href="/internalReference/BaseBoltBehaviour.html">BaseBoltBehaviour</a><span></span><a href="/internalReference/BaseControlNames.html">BaseControlNames</a><span></span><a href="/internalReference/BathroomMirrorController.html">BathroomMirrorController</a><span></span><a href="/internalReference/BatteryAttachmentBehaviour.html">BatteryAttachmentBehaviour</a><span></span><a href="/internalReference/BeamCannonBehaviour.html">BeamCannonBehaviour</a><span></span><a href="/internalReference/BeamformerBehaviour.html">BeamformerBehaviour</a><span></span><a href="/internalReference/BeamRepeaterBehaviour.html">BeamRepeaterBehaviour</a><span></span><a href="/internalReference/BehaviourManager.html">BehaviourManager<T></a><span></span><a href="/internalReference/BellBehaviour.html">BellBehaviour</a><span></span><a href="/internalReference/BellClip.html">BellClip</a><span></span><a href="/internalReference/BellClipContainer.html">BellClipContainer</a><span></span><a href="/internalReference/BetterLightMapGenerator.html">BetterLightMapGenerator</a><span></span><a href="/internalReference/BetterLightMapGenerator_BoundingBox.html">BetterLightMapGenerator.BoundingBox</a><span></span><a href="/internalReference/BetterLightMapGenerator_Properties.html">BetterLightMapGenerator.Properties</a><span></span><a href="/internalReference/BetterLightMapGenerator_Vertex.html">BetterLightMapGenerator.Vertex</a><span></span><a href="/internalReference/BlackHoleBehaviour.html">BlackHoleBehaviour</a><span></span><a href="/internalReference/BlackHoleContainerBehaviour.html">BlackHoleContainerBehaviour</a><span></span><a href="/internalReference/BlasterBehaviour.html">BlasterBehaviour</a><span></span><a href="/internalReference/BlasterboltBehaviour.html">BlasterboltBehaviour</a><span></span><a href="/internalReference/BleedingParticleBehaviour.html">BleedingParticleBehaviour</a><span></span><a href="/internalReference/Blood.html">Blood</a><span></span><a href="/internalReference/BloodContainer.html">BloodContainer</a><span></span><a href="/internalReference/BloodContainer_PressureDirection.html">BloodContainer.PressureDirection</a><span></span><a href="/internalReference/BloodContainer_RefFloat.html">BloodContainer.RefFloat</a><span></span><a href="/internalReference/BloodContainer_SerialisableDistribution.html">BloodContainer.SerialisableDistribution</a><span></span><a href="/internalReference/BloodExplosionBehaviour.html">BloodExplosionBehaviour</a><span></span><a href="/internalReference/BloodImpactBehaviour.html">BloodImpactBehaviour</a><span></span><a href="/internalReference/BloodTankBehaviour.html">BloodTankBehaviour</a><span></span><a href="/internalReference/BloodTankBehaviour_TankMode.html">BloodTankBehaviour.TankMode</a><span></span><a href="/internalReference/BloodWireBehaviour.html">BloodWireBehaviour</a><span></span><a href="/internalReference/BloodWireTool.html">BloodWireTool</a><span></span><a href="/internalReference/BloomMode.html">BloomMode</a><span></span><a href="/internalReference/BloomModeRadioButton.html">BloomModeRadioButton</a><span></span><a href="/internalReference/BlueUseWireTool.html">BlueUseWireTool</a><span></span><a href="/internalReference/BoatMotorBehaviour.html">BoatMotorBehaviour</a><span></span><a href="/internalReference/BooleanRadioButton.html">BooleanRadioButton</a><span></span><a href="/internalReference/BoundingBoxBehaviour.html">BoundingBoxBehaviour</a><span></span><a href="/internalReference/BreakJointOnBurnBehaviour.html">BreakJointOnBurnBehaviour</a><span></span><a href="/internalReference/BreakJointOnShotBehaviour.html">BreakJointOnShotBehaviour</a><span></span><a href="/internalReference/BugReportFormBehaviour.html">BugReportFormBehaviour</a><span></span><a href="/internalReference/BulbBehaviour.html">BulbBehaviour</a><span></span><a href="/internalReference/BulletTracerPool.html">BulletTracerPool</a><span></span><a href="/internalReference/BurnableSpriteBehaviour.html">BurnableSpriteBehaviour</a><span></span><a href="/internalReference/BurnerBehaviour.html">BurnerBehaviour</a><span></span><a href="/internalReference/BusGeneratorBehaviour.html">BusGeneratorBehaviour</a><span></span><a href="/internalReference/ButtonBehaviour.html">ButtonBehaviour</a><span></span><a href="/internalReference/CableBehaviour.html">CableBehaviour</a><span></span><a href="/internalReference/CableWireTool.html">CableWireTool</a><span></span><a href="/internalReference/CameraControlBehaviour.html">CameraControlBehaviour</a><span></span><a href="/internalReference/CameraShakeBehaviour.html">CameraShakeBehaviour</a><span></span><a href="/internalReference/CameraSyncBehaviour.html">CameraSyncBehaviour</a><span></span><a href="/internalReference/CannotShare.html">CannotShare</a><span></span><a href="/internalReference/CarBehaviour.html">CarBehaviour</a><span></span><a href="/internalReference/CardiopulmonaryBypassMachineBehaviour.html">CardiopulmonaryBypassMachineBehaviour</a><span></span><a href="/internalReference/Cartridge.html">Cartridge</a><span></span><a href="/internalReference/CatalogBehaviour.html">CatalogBehaviour</a><span></span><a href="/internalReference/CatalogData.html">CatalogData</a><span></span><a href="/internalReference/CatalogDropdownBehaviour.html">CatalogDropdownBehaviour</a><span></span><a href="/internalReference/CatalogToggleBehaviour.html">CatalogToggleBehaviour</a><span></span><a href="/internalReference/Category.html">Category</a><span></span><a href="/internalReference/CategoryButtonBehaviour.html">CategoryButtonBehaviour</a><span></span><a href="/internalReference/CeilingTurretBehaviour.html">CeilingTurretBehaviour</a><span></span></span></span>
</div>
</div>
</div>
<div class="breadcrumbs">
<a href="/index.html">Home</a>
</div>
<div class="search">
<input id="search-bar" type="text" placeholder="Search..." />
</div>
<div class="page" id="markdown-result">
<h1 id="home">Home</h1>
<h3 id="welcome-to-the-people-playground-modding-wiki"><em>Welcome to the People Playground modding wiki!</em></h3>
<p>This wiki covers modding People Playground, assuming you have at least a basic understanding of C#. It is always updated to the latest version of the game. Some behaviour described here may differ in older versions.</p>
<p>It is recommended you start out with <a href="./tutorials.html">the tutorials</a> and read some of <a href="./intro/snippets.html">the snippets</a> to get an idea of how things work. Refer to the documentation for more details.</p>
<style>
.home-buttons{
display: grid;
grid-template-rows: 50% 50%;
grid-template-columns: 50% 50%;
width: 100%;
}
.home-buttons > *
{
align-self: center;
justify-self: center;
text-decoration: none !important;
}
.home-button
{
text-align: center;
width: 240px;
padding: 20px;
background: #d42c5e;
color: white;
margin: 10px;
transition: background-color 120ms ease-in-out;
cursor: pointer;
text-decoration: none !important;
}
.home-button:hover{
background: #f0376e;
}
</style>
<div class="home-buttons">
<a href="./tutorials.html">
<div class="home-button">
Tutorials
</div>
</a>
<a href="./gameAssets.html">
<div class="home-button">
Sprites and object hierarchies
</div>
</a>
<a href="./internalReference.html">
<div class="home-button">
Game code documentation
</div>
</a>
<a href="./snippets.html">
<div class="home-button">
Code snippets
</div>
</a>
</div>
<div class="obsolete-message">
<b>Attention!</b>
<p>This member is obsolete and should not be used. It is a remnant from the past.</p>
</div>
</div>
<div class="search-results page" id="search-results">
bi bij bibi
</div>
</div>
<script>
const urlParams = new URLSearchParams(window.location.search);
const searchResults = document.getElementById("search-results");
const markdownPage = document.getElementById("markdown-result");
const searchBar = document.getElementById("search-bar");
searchBar.addEventListener("keypress", (e) => {
if (e.key == "Enter") {
const k = encodeURIComponent(searchBar.value);
const url = new URL(window.location);
url.searchParams.set("search", k);
window.location = url;
}
});
if (urlParams.has("search")) {
const k = decodeURIComponent(urlParams.get("search"));
const r = search(k);
searchBar.value = k;
generateSearchPage(k, r);
}
function search(phrase) {
const results = [];
phrase = phrase.normalize().toLowerCase();
phrase = phrase.replace(/\s+/g, "");
console.log(phrase);
for (var i of searchIndex) {
if (i.Keywords?.includes(phrase))
results.push(i);
}
return results
}
function stringDistance(a, b) {
let delta = 0;
const lengthDelta = Math.abs(a.length - b.length);
for (let i = 0; i < Math.min(a.length, b.length); i++) {
if (a[i] != b[i])
delta++;
}
return delta + lengthDelta;
}
function generateSearchPage(phrase, results) {
if (results.length == 0) {
searchResults.innerHTML = `<h4 style="opacity: 0.5">There are no pages that contain <i>"${phrase}"</i></h4>`;
} else {
searchResults.innerHTML = `<h4>These pages contain <i>"${phrase}"</i></h4>`;
results.sort((a, b) => stringDistance(phrase, a.Title) - stringDistance(phrase, b.Title));
for (var result of results) {
const child = document.createElement("a");
child.href = result.NodeResultPath;
child.innerHTML = result.Title;
searchResults.appendChild(child);
}
}
markdownPage.style.display = "none";
searchResults.style.display = "block";
}
</script>
</body>
</html>