Skip to content

ericoporto/distfx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

distfx

distortion effects script module for AGS, based on Earthbound battle effects.

Usage

In a room script, link before fade in and repeatedly execute, and try the example below.

DistFX fx; // somewhere with the same lifetime as the output surface while distorted
Overlay* ovr;
DynamicSprite* spr;

function room_RepExec()
{
  fx.Update(Room.GetDrawingSurfaceForBackground(), spr.GetDrawingSurface(), 2 /* effect */);
  ovr.Graphic = spr.Graphic;
}

function room_Load()
{
  if(ovr == null) {
    spr = DynamicSprite.CreateFromBackground();
    ovr = Overlay.CreateGraphical(0, 0, spr.Graphic, true);
  }
}

Original Earthbound effects used a per pixel approach, but due to how AGS Script drawing performs and works, this module use a tile based approach.

Script API

DistFX.Update

void DistFX.Update(DrawingSurface* source, DrawingSurface* dest, int effect);

Draws from a source surface to a destination surface using a distortion effect.

DistFX.Reset

void DistFX.Reset();

Reset internal state, use on state change.

DistFX.DrawingTransparency

attribute int DistFX.DrawingTransparency;

Drawing Transparency, use for blurring the effects. Default is 0, range from 0 to 99.

DistFX.TileWidth

attribute int DistFX.TileWidth;

Distortion Tile Width, factor of source width, bigger is less resource intensive. Default is 64 pixels.

DistFX.TileHeight

attribute int DistFX.TileHeight;

Distortion Tile Height, factor of source height, bigger is less resource intensive. Default is 1 pixel.

License

This code is licensed with MIT LICENSE.