Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DukeShadowSprite : Actor
- {
- Default
- {
- Radius 0;
- Height 0;
- +NOINTERACTION;
- RenderStyle "Stencil";
- StencilColor "00 00 00";
- }
- override void Tick()
- {
- if (!master)
- {
- // die
- Destroy();
- return;
- }
- if (!master.bCorpse)
- {
- vector3 offsets = (0,0,0);
- // note: this is a hack. gross hack. it works, except portals. in portals the shadow will still be random.
- Actor consoleCamera = (consoleplayer>=0) ? players[consoleplayer].camera : null;
- if (consoleCamera)
- {
- vector3 awayFromCamera = (pos-consoleCamera.pos).Unit()/8;
- offsets = awayFromCamera;
- }
- A_Warp(AAPTR_MASTER, offsets.x, offsets.y, offsets.z, 0, WARPF_ABSOLUTEOFFSET|WARPF_NOCHECKPOSITION|WARPF_TOFLOOR|WARPF_WARPINTERPOLATION|WARPF_COPYVELOCITY);
- sprite = master.sprite;
- frame = master.frame;
- A_SetScale(master.scale.x, master.scale.y/16);
- alpha = master.alpha/2;
- angle = master.angle;
- A_SetSize(master.radius, 0, false);
- }
- else
- {
- alpha = 0;
- }
- Super.Tick();
- }
- States
- {
- Spawn:
- TNT1 A 1;
- loop;
- }
- }
- class ShadowHandler : EventHandler
- {
- override void WorldThingSpawned(WorldEvent ev)
- {
- // attach shadow to every monster (for now)
- if (ev.Thing.bIsMonster)
- {
- DukeShadowSprite shadow = DukeShadowSprite(Actor.Spawn('DukeShadowSprite', ev.Thing.pos));
- shadow.alpha = 0;
- shadow.master = ev.Thing;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement