Wintermute Engine > Scripts, plugins, utilities, goodies
Lightmap DLL
falcomus:
Demo Screen:
http://www.youtube.com/watch?v=3Pgd-T_Cdyo&feature=youtu.be
_____________________________________________________________________________________________________________________________________
- Create a empty bmp, same size like your scene bmp.
- Fill it completely with color "white"
- The areas, where the actor stands in the shadow, you can paint on your lightmap in a darker gray
- If the actor for example stands in front of a fire-place, you can paint this area in the lightmap red (Easiest way to use 2 layers, Photoshop, .NET Paint etc.)
_____________________________________________________________________________________________________________________________________
Embed the dll and call the function "GetRGB" in Game_loop.script.
Example:
external "C:\LMDLL.dll" int GetRGB(string fName, int x, int y, int buflen, string buf);
// infinite loop of game_loop.script
while(true)
{
//Don't call func every pixel movement
if ( (actor.X % 5 == 0) || (actor.Y % 5 == 0) )
{
//Call the dll function and receive the lightmap-color values (RGB) at actors coordinates
GetRGB ("C:\LM.bmp", actor.X,actor.Y, str.Capacity,str);
//Split the result value in an array (RGB-values, I did not know how to send the 3 int values back from DLL, so I used a string)
arr = str.Split(";");
//Change actors color corresponding to lightmap
actor.AlphaColor = MakeRGBA(ToInt(arr[0]),ToInt(arr[1]),ToInt(arr[2]),255);
}
You can use gradients (black to white or lightgray) in lightmap, while the actor is walking in scene his color and brightness is changing :-)
P.S: Array and string I declared in base.inc
arr = new Array();
str = new String(100);
---------------------------------------------------------------------------------------------------------------
Because I have no webspace I can't put a link to the dll and example bmp.
If somebody likes to have the dll I'll send it to you via email
SOURCE OF DLL
=============
library LMDLL;
uses
Windows, SysUtils, Dialogs, Graphics, Classes;
{$R *.res}
function GetRGB(fName: string; x, y: integer; buflen: integer; buf: PChar): integer; stdcall;
var
aBmp: TBitmap;
iColor: Longint;
r,g,b: integer;
begin
try
aBmp := TBitmap.Create;
aBmp.LoadFromFile(fName);
iColor := ColorToRGB(aBmp.Canvas.Pixels[x,y]);
finally
aBmp.Free;
end;
r := GetRValue(iColor);
b := GetBValue(iColor);
g := GetGValue(iColor);
StrLCopy(buf, PChar(IntToStr(r) + ';' + IntToStr(g) + ';' + IntToStr(b)), buflen);
result := 0;
end;
exports GetRGB;
begin
end.
piere:
Cool ! Can you post a link to download this?
keybone:
nice! work only 2d actor?
shuin:
I haven't used WME in a while, but watching that video, isn't it the same as the engine's decoration regions?
lof:
i am guessing it is, but i get why he made this plugin, if you need to make a bunch of scenes with different lightmaps, this tool can come in handy.
no need to make regions, locate them, shape them, select color, just make an extra colored layer of the floor while designing the scene.
cheers ::beer
Navigation
[0] Message Index
[#] Next page
Go to full version