Files
ReSkate/Extension/Rendering/plugin_effects.h
T
gbgyo 550887162f Effects: release stale resources and require resident assets
Resolve private effects only from the level-wide Game compartment and validate
their resident declarations with the same parser used by the mod merge.

Release surviving native services during world changes, check decal realm
ownership before cleanup, defer ordinary off-thread releases, and prune expired
VM handles so they return their quota. Size the temporary decal allowance from
the live count while preserving external settings changes.

Gate contact geometry behind events.physics.geometry, document the manifest
migration, and test Blood impacts through the plugin host using its own manifest.
Add regression coverage for residency, lifetime, quota and draw-budget handling.

Validation: Release builds of the runtime and plugin/effect test targets succeed.
The plugins, effect_geometry and effect_lifetime tests pass. Existing MSBuild
asset-directory dependency warnings remain; native visuals need an in-game check.
2026-10-26 22:19:43 +03:00

19 lines
871 B
C++

#pragma once
#include <utility>
#include <vector>
#include "Extension/Plugins/plugin_effects.h"
// The game-thread owner of plugins' native effects. No native reference crosses into a VM.
namespace dingosdk::effects {
void tick(std::uintptr_t base, std::uintptr_t client, bool ready, bool noclip, bool editor) noexcept;
void before_level_transition(unsigned next) noexcept;
std::uint64_t create(std::string_view plugin, const plugins::EffectRequest& request);
void move(std::string_view plugin, std::uint64_t id, const plugins::EffectMatrix& matrix);
void stop(std::string_view plugin, std::uint64_t id);
void opacity(std::string_view plugin, std::uint64_t id, float value);
void release(std::string_view plugin, std::uint64_t id);
std::vector<std::uint64_t> live(std::string_view plugin);
void clear(std::string_view plugin);
std::pair<bool, std::uint64_t> status();
}