Worklog for Kalisme

shaKAL

Return to Worklogs

HOLE retouch and shaKAL 0.5 download links(Posted 2008-04-07)
Hey there everybodies....
Finally got shaKAL 0.5 and HOLE:retouch up on the net...
Please note:
*I'm hoping to re-write shaKAL soon to make easier to read.
*Hole: retouch is a tech demo using shaKAL
*I haven't check the speed for these downloads

Hole: retouch
http://www.uploading.com/files/DDHTIINP/hole_retouch.zip.html

shaKAL 0.5 & tutorials
http://www.uploading.com/files/DII9REKX/tutorial1.zip.html

Feed back please.

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

currently at 0.5(Posted 2008-04-04)
well, things are getting a little stressful (currently job hunting), but I'm considering getting back into the games devolpment scene....Unfortunatley these TAFE computers don't seem to let people upload files to the net (darn)...
I'll try to use the university computers, but if not I might need to ask someone if I can Email them files to add to my mediafire acount...

Oh well... shaKAL is still at 0.5...
Really wanting to do some freeware games...

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

0.5 soon(Posted 2007-09-24)
After posting that odd update of that tech demo I released when I was 15, I noticed a wierd glitch in my ol' shaKAL shadow culling code... so I used some older code I wrote, which worked better (wierd, eh?)
I didn't think I'd return to this project (or programming, depressingly enough) because I was WAY too wrapped up in my course and producing "artwork". Luckily a friend got me back into playing video games... so I became interested in programming again.
I shall post the new verson ASAP.

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

0.3(Posted 2007-02-20)
I have recently done some more work on shaKAL...
here are files for the 0.3 release:

http://download.35mb.com/kalisme/shaKAL0_3.zip
http://download.35mb.com/kalisme/terrain%20demo.zip
http://download.35mb.com/kalisme/tutorials.zip

Get the required *.decls & *.dll to work with this at:
www.blitzbasic.com/codearcs/codearcs.php?code=1191

or:
www.freewebs.com/elias_t/tribox_dll.zip

(they are required to run the shadow library)

(sorry for being so blunt, but it's too hot today!)
Hope someone finds this work of interest.
I'm still working on shaKAL.
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

0.25(Posted 2007-02-13)
Here is version 0.25.
Fixed a glitch causing jagged shadowcamera movement & added shadow culling for terrains. (experimental)

www.freewebs.com/elias_t/tribox_dll.zip <--you'll need this.



In short, thanyou to the support of two blitzers, I've decided to continue work on shaKAL.... expect updates... but know I might be slower inbetween updates now because I'm using TAFE internet to update and I'm currently teaching myself c++ & SDL.

a scene without shaKAL: (before shadows)


The same scene WITH a shadow:


A better scene: (still primitives though)


Tally-ho & pip pip then...
Till next time,
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

Case of the missing files.(Posted 2007-02-08)
Erm... I just tried to download my own files (the shaKAL libs)... (yeah... I download my own stuff now and again... I check if they still work.)
But unfortunatley www.filelodge.com doesn't seem to exist anymore!! :o
Well... I'll sort it out I guess. But if anyone wants to help... I'm not gonna say no :P
Oh, and if anyone wants shaKAL emailed to them or something, just eamail me at kalisme@...
it might take a few days for me to reply since I'm using the tafes internet.... but I'll reply.
Just make sure to add "shaKAL" in the subject.
(my hotmail presumes most poeple are junkmail... very odd.)
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

pseudo-update(Posted 2007-02-07)
well... this isn't really an update...
I haven't done much... I fiddled around with shaKAL in the hollidays a little... but I was quite busy learning C++ and studying stuff...
There wasn't much intrest in the project... I might continue if I get some spare time and a good idea (they do come... sometimes.)
But I might shove up a simple tutorial I wrote so that it's easy to understand the basis of writting your own shadow engine... I admit mine was a tad fiddley...
I'll have a look at the tutorial tonight and see if I can shorten it down or something.... hopefully I'll upload it this week sometime.
Well, that's all for now.
Thankyou for those who supported shaKAL.
If you did have any intrest in the project, feel free to Email me: kalisme@...
(I think I just need motivation... lack of feedback & intrest sorta kills the thrill of coding freeware opensource stuff... I know I sound like an attention seeker, but I'm sure some of you out there can understand.)
I want to continue TRYING to contribute to this great comunity so I want to continue coding in blitz3d, but I know I have to get more seriousley into c++ if I ever want to get anywhere in the industry.
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

YAY!!! Version 0.2 avadable!(Posted 2006-12-06)
http://www.filelodge.com/files/room17/427152/shaKALv02.zip

there it is!
I just uploaded it!
version 0.2 is alot nicer than 0.1, but still not a version 1.0... not yet. :(

Next I hope to restructure my code so it's easyier to re-write and learn from. (aren't I nice?)

Get the required *.decls & *.dll to work with this at:
www.blitzbasic.com/codearcs/codearcs.php?code=1191

or:
www.freewebs.com/elias_t/tribox_dll.zip

(they are required to run the shadow library)

thankyou for reading... any support would be great :D
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

working on releasing version 0.2 ASAP(Posted 2006-12-04)
I've currently got a stable 0.2... (I guess)
I'm just trying to tidy it up before I post it...
Now the shadows are only casted onto the sides of the mesh that have light hitting them.

Here's something I want to say to anyone who has tryed or is using shaKAL:
-with the rotatable receivers.... it turns out they are very dodgey... I shall have to work on the code more.... (grrrr)... but changing the "yaw" in real time seems ok... but pitch and roll are being a real hassle.

-DO NOT SCALE RECEIVERS WITH "scaleentity", use "scalemesh".

Well... I shall post a new version ASAP...
My next goal is culling unlit terrain mesh polygons.
Since I don't think I can post in the hollidays, I might work on deKAL... then make a tech demo using my recent work...
Thanks for reading,
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

patching 0.1(Posted 2006-11-29)
erg.... here is a patched version of 0.1... my rotateble receivers were very flawed.... (grrr)
they didn't like "roll" being played with...
I don't think it minds now...
I was going to release this in a v 0.15, but I found a bug in the code I was using for culling unlit normals...
well... hope 0.15 comes soon.
Best of wishes

; ShaKAL
;version 0.1   + rotatable receiver patch fixes flaw in original release.

Global shakal_terrain_nudge#=3
Dim mess(100,100)    ;<-test
Global Terrain_shadow_detail=40

Type kShl
	Field	ent,dis#
End Type

Type kShob
	Field	ent,hi#,fat#,sclx#,piv#
End Type

Type kShr
	Field	ent
End Type

Type kShr_ter
	Field	ent,x_scale#,z_scale#
End Type


Type kmsh
	Field	ob,lite,mesh,surf,texy
End Type

Type kSh_d ;dev mode types
	Field	ent,box,hi#,fat#,sclx#,piv#
End Type

Global shaKAL_camera_range#=700

Global blur_cam_x#=65536.0
Global blur_cam_y#=65536.0
Global blur_cam_z#=0.0


Global blur_times=1
Global blur_radius#=1



Global diss#
Global dis#
Global shadbox_x
Global shadbox_y
Global shadbox_z
Global shadbox_sx
Global shadbox_sy
Global shadbox_sz

;---------------------int box
Dim TriVertex(3)

Dim TriVx#(3)
Dim TriVy#(3)
Dim TriVz#(3)

Dim TriVnx#(3)
Dim TriVny#(3)
Dim TriVnz#(3)

Dim TriVdot#(3)

Dim ShadowVertex(3)

Global bank=CreateBank(15*4)

Global ksh_ng#=.00005     ;<---nudge vertesies  
Global  ssize=64     ;<----shadow size

shadbox_x=50
shadbox_y=-5000
shadbox_z=50

shadbox_sx=50
shadbox_sy=50
shadbox_sz=50


Global ksh_pivvy=CreatePivot()
Global ksh_sdpiv=CreatePivot()


Global ksh_cam =CreateCamera()                   ;<----camera for shadows
CameraRange ksh_cam,1,shaKAL_camera_range#
CameraViewport ksh_cam,0,0,ssize,ssize 
CameraClsColor ksh_cam,255,255,255
CameraProjMode ksh_cam,2
CameraFogMode ksh_cam,1
CameraFogColor ksh_cam,255,255,255


Function create_light(ent,dis#)
c_light=0
For d.kshl = Each kshl
If d\ent=ent Then c_light=1
Next
If c_light=1 Then Goto skip_create_light

	d.kshl=New kshl
	d\ent=ent
	d\dis#=dis
.skip_create_light
End Function

Function draw_light(cam)
For d.kshl = Each kshl
CameraProject cam,EntityX(d\ent,1),EntityY(d\ent,1),EntityZ(d\ent,1) ;moo
Line ProjectedX()+Cos(Rnd(360))*20,ProjectedY()+Sin(Rnd(360))*20,ProjectedX(),ProjectedY()
Text ProjectedX()+2,ProjectedY()+15,"light source"
Next
End Function 

Function create_caster(ent,hi#,fat#,scalex#,piv_offset#)
c_cast=0
For d.kshob = Each kshob
If d\ent=ent Then c_cast=1
Next
If c_cast=1 Then Goto skip_create_caster
	d.kshob=New kshob
	d\ent=ent
	d\hi#=hi#
	d\fat#=fat#
	d\sclx#=scalex#
	d\piv=piv_offset#
	.skip_create_caster
End Function

Function draw_caster(cam)
For d.kshob = Each kshob
CameraProject cam,EntityX(d\ent,1),EntityY(d\ent,1),EntityZ(d\ent,1)
Line ProjectedX()-15,ProjectedY(),ProjectedX()+15,ProjectedY()
Line ProjectedX(),ProjectedY()-15,ProjectedX(),ProjectedY()+15
Text ProjectedX()+2,ProjectedY()+15,"caster"
Next
End Function 

Function create_receiver(ent)
c_receiver=0
For d.kshr = Each kshr
If d\ent=ent Then c_receiver=1
Next
If c_receiver=1 Then Goto skip_create_receiver


	d.kshr=New kshr
	d\ent=ent
	
.skip_create_receiver
End Function

Function create_terrain_receiver(ent,x#,z#)
c_terrain_receiver=0
For d.kshr_ter = Each kshr_ter
If d\ent=ent Then c_terrain_receiver=1
Next
If c_terrain_receiver=1 Then Goto skip_create_terrain_receiver
	d.kshr_ter=New kshr_ter
	d\ent=ent
	d\x_scale#=x#
	d\z_scale#=z#
.skip_create_terrain_receiver
End Function


Function update_ks(g_cam)
CameraRange ksh_cam,1,shaKAL_camera_range#
killshads()
For a.kshl = Each kshl

  For b.kshob = Each kshob
createcopy(a\ent,b\ent,b\hi#,b\fat#,b\piv#,a\dis#,b\sclx#,g_cam)

  Next


Next
End Function

Function killshads()
For c.kmsh = Each kmsh
If c\mesh <> 0 Then 	ClearSurface c\surf:FreeTexture c\texy:FreeEntity c\mesh: Delete c
Next

End Function

Function createcopy(ligt,mesh,hi#,fat#,offset#,ldis#,scalex#,g_cam)
CameraViewport ksh_cam,0,0,ssize,ssize 

Local shadbox=CreateCube()
EntityColor shadbox,255,255,255
PositionEntity shadbox,shadbox_x,shadbox_y,shadbox_z
ScaleEntity shadbox,shadbox_sx,shadbox_sy,shadbox_sz
EntityFX shadbox,1
EntityOrder shadbox,-2

offset_piv=CreatePivot()

PositionEntity offset_piv,EntityX(mesh,1),EntityY(mesh,1),EntityZ(mesh,1)
RotateEntity offset_piv,EntityPitch(mesh,1),EntityYaw(mesh,1),EntityRoll(mesh,1)
MoveEntity offset_piv,0,offset#,0


PositionEntity ksh_pivvy,EntityX(ligt,1),EntityY(ligt,1),EntityZ(ligt,1)
PointEntity ksh_pivvy,offset_piv
dis#=EntityDistance(ksh_pivvy,offset_piv)

If dis# > ldis#+1 Then Goto skipc2

	c.kmsh=New kmsh
c\texy=CreateTexture(ssize,ssize,16+32)
c\mesh= CreateMesh()
c\surf  = CreateSurface(c\mesh)
PositionEntity ksh_cam,EntityX(ligt,1),EntityY(ligt,1),EntityZ(ligt,1)
PointEntity ksh_cam,offset_piv
CameraZoom ksh_cam,.06/scalex#

PositionEntity ksh_pivvy,EntityX(ligt,1),EntityY(ligt,1),EntityZ(ligt,1)
PointEntity ksh_pivvy,offset_piv
dis#=EntityDistance(ksh_pivvy,offset_piv)
ndis#=ldis#-dis#
MoveEntity ksh_pivvy,0,0,dis#+ndis#
pfox=EntityX(ksh_cam,1)-EntityX(mesh,1)
pfoy=EntityY(ksh_cam,1)-EntityY(mesh,1)
pfoz=EntityZ(ksh_cam,1)-EntityZ(mesh,1)


obx#=EntityX(offset_piv,1)
oby#=EntityY(offset_piv,1)
obz#=EntityZ(offset_piv,1)

sbx#=EntityX(ksh_pivvy,1)
sby#=EntityY(ksh_pivvy,1)
sbz#=EntityZ(ksh_pivvy,1)

bsw#=sbx#-obx#
bsh#=sby#-oby#
bsd#=sbz#-obz#

cbx#=obx#+((bsw)*.5)
cby#=oby#+((bsh)*.5)
cbz#=obz#+((bsd)*.5)


If bsw#<0 Then bsw#=bsw#*-1
If bsh#<0 Then bsh#=bsh#*-1
If bsd#<0 Then bsd#=bsd#*-1
bsw#=bsw#+(fat#*2)
bsh#=bsh#+(hi#*2)
bsd#=bsd#+(fat#*2)




PokeFloat bank,0,cbx#
PokeFloat bank,4,cby#
PokeFloat bank,8,cbz#

PokeFloat bank,12,bsw#*.5
PokeFloat bank,16,bsh#*.5
PokeFloat bank,20,bsd#*.5


For d.kshr = Each kshr

If d\ent = offset_piv Then Goto scopym
If d\ent = mesh Then Goto scopym

RotateMesh d\ent,EntityPitch(d\ent),0,0
RotateMesh d\ent,0,EntityYaw(d\ent),0
RotateMesh d\ent,0,0,EntityRoll(d\ent)

surfaces = CountSurfaces(d\ent)

   For LOOP_Surface = 1 To Surfaces
		
		Surface_Handle = GetSurface(d\ent, LOOP_Surface)
        Tris = CountTriangles(Surface_Handle)
		
		For LOOP_Tris = 0 To Tris-1

				For LOOP_Verts = 0 To 2

					TriVertex(LOOP_Verts) = TriangleVertex(Surface_Handle, LOOP_Tris, LOOP_Verts)
					TriVx#(LOOP_Verts) = VertexX#(Surface_Handle, TriVertex(LOOP_Verts)) + EntityX(d\ent,1)
					TriVy#(LOOP_Verts) = VertexY#(Surface_Handle, TriVertex(LOOP_Verts)) + EntityY(d\ent,1)
					TriVz#(LOOP_Verts) = VertexZ#(Surface_Handle, TriVertex(LOOP_Verts)) + EntityZ(d\ent,1)

					TriVnx#(LOOP_Verts) = VertexNX#(Surface_Handle, TriVertex(LOOP_Verts))+EntityPitch(d\ent)
					TriVny#(LOOP_Verts) = VertexNY#(Surface_Handle, TriVertex(LOOP_Verts))+EntityYaw(d\ent)
					TriVnz#(LOOP_Verts) = VertexNZ#(Surface_Handle, TriVertex(LOOP_Verts))+EntityRoll(d\ent)								Next
;triangle vertices
;v0
PokeFloat bank,24,trivx#(0)
PokeFloat bank,28,trivy#(0)
PokeFloat bank,32,trivz#(0)
;v1
PokeFloat bank,36,trivx#(1)
PokeFloat bank,40,trivy#(1)
PokeFloat bank,44,trivz#(1)
;v2
PokeFloat bank,48,trivx#(2)
PokeFloat bank,52,trivy#(2)
PokeFloat bank,56,trivz#(2)

If triBox(bank) = 1
															

	For LOOP_Verts = 0 To 2			
	ShadowVertex(LOOP_Verts) = AddVertex(c\surf, TriVx#(LOOP_Verts)+(TriVnx#(LOOP_Verts)*ksh_ng#), TriVy#(LOOP_Verts)+(TriVny#(LOOP_Verts)*ksh_ng#), TriVz#(LOOP_Verts)+(TriVnz#(LOOP_Verts)*ksh_ng#))
												
	Next															
									

	AddTriangle(c\surf, ShadowVertex(0), ShadowVertex(1), ShadowVertex(2))
										
EndIf		


Next
Next
EntityAlpha c\mesh,1

RotateMesh d\ent,0,0,-EntityRoll(d\ent)
RotateMesh d\ent,0,-EntityYaw(d\ent),0
RotateMesh d\ent,-EntityPitch(d\ent),0,0

.scopym

Next

;============================================================================================
;============================================================================================
;============================================================================================


sizex#=Float(bsw*1.125)/Terrain_shadow_detail
sizez#=Float(bsd*1.125)/Terrain_shadow_detail


For e.kshr_ter = Each kshr_ter
max_x#=EntityX(e\ent)+(TerrainSize(e\ent) * e\x_scale#)
max_z#=EntityZ(e\ent)+(TerrainSize(e\ent) * e\z_scale#)

x_box_min#=cbx#-((sizex#*Terrain_shadow_detail)*.5)
x_box_max#=cbx#+((sizex#*Terrain_shadow_detail)*.5)

z_box_min#=cbz#-((sizez#*Terrain_shadow_detail)*.5)
z_box_max#=cbz#+((sizez#*Terrain_shadow_detail)*.5)


If x_box_min# < max_x# Then If x_box_max# > EntityX#(e\ent) Then If z_box_min# < max_z Then If z_box_max# > EntityZ#(e\ent) Then 

 For b=0 To Terrain_shadow_detail
  For a=0 To Terrain_shadow_detail
def_x#=cbx#-((sizex#*Terrain_shadow_detail)*.5)+(a*sizex#)
def_z#=cbz#-((sizez#*Terrain_shadow_detail)*.5)+(b*sizez#)

If def_x#<EntityX#(e\ent) Then def_x#=EntityX(e\ent)
If def_x#>max_x# Then def_x#=max_x#

If def_z#<EntityZ#(e\ent) Then def_z#=EntityZ#(e\ent)
If def_z#>max_z# Then def_z#=max_z#


y#=TerrainY(e\ent,def_x#,0,def_z#)+shakal_terrain_nudge#
mess(a,b)= AddVertex (c\surf,def_x#,y#,def_z#)


  Next
 Next

 For b=0 To Terrain_shadow_detail-1
  For a=0 To Terrain_shadow_detail-1
   AddTriangle c\surf,mess(a,b),mess(a+1,b),mess(a+1,b+1)
   AddTriangle c\surf,mess(a,b),mess(a,b+1),mess(a+1,b+1)
  Next
 Next
EndIf
Next

;============================================================================================
;============================================================================================
;============================================================================================



EntityFX mesh,8+1
EntityColor mesh,0,0,0
EntityOrder mesh,-2

HideEntity g_cam 
ShowEntity ksh_cam 

TextureBlend c\texy,3


temp_mesh=CopyEntity(mesh)
PositionEntity temp_mesh,shadbox_x,shadbox_y,shadbox_z

PositionEntity ksh_cam,shadbox_x+pfox,shadbox_y+pfoy,shadbox_z+pfoz


RenderWorld()
PositionEntity ksh_cam,EntityX(ligt,1),EntityY(ligt,1),EntityZ(ligt,1)

ShowEntity g_cam
Color 255,255,255
Rect 1,1,ssize-1,ssize-1,0
Rect 0,0,ssize,ssize,0
CopyRect 0,0,ssize,ssize,0,0,BackBuffer(),TextureBuffer(c\texy) 
For s=1 To CountSurfaces(c\mesh) 
surf=GetSurface(c\mesh,s) 
For v=0 To CountVertices(surf)-1 
TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),c\mesh,ksh_cam
VertexTexCoords surf,v,(TFormedX()/scalex#)/32+0.5,1-((TFormedY()/scaleX#)/32+.5)

PositionEntity ksh_sdpiv,VertexX(surf,v)+EntityX(c\mesh,1),VertexY(surf,v)+EntityY(c\mesh),VertexZ(surf,v)+EntityZ(c\mesh)
dis2# =EntityDistance(ksh_sdpiv,ksh_cam)
diss#=(ldis#-dis2#)/ldis#
dis#=1-diss#
VertexColor surf,v,(128*dis#)*2,(128*dis#)*2,(128*dis#)*2

Next 
Next 



HideEntity g_cam
ShowEntity ksh_cam 

;------------------------------------------------------------------------------------


blur_quality=blur_times
If blur_quality > 0
Local blurmesh[16*4]
Local loop
Local blur_cam


	RotateEntity ksh_cam,90,0,0,True
	PositionEntity ksh_cam, blur_cam_x#, blur_cam_y#, blur_cam_z#
CameraZoom ksh_cam,1


	For loop = 0 To (blur_quality*4)-1
			blurmesh[loop] = CreateCube()
	Next
	
	blurradius#=blur_radius#*(1.0/256.0)
	bluranglestep#=360.0/Float(blur_quality*4)
	blurshade = Ceil(255.0/Float(blur_quality*4))
	
	For loop=0 To (blur_quality*4)-1
			EntityTexture blurmesh[loop],c\texy

			EntityColor blurmesh[loop],255*(1.0/Float(loop+1)),255*(1.0/Float(loop+1)),255*(1.0/Float(loop+1))

			ScaleEntity blurmesh[loop],1,.001,1
			blurangle# = bluranglestep# * Float(loop) + 180.0*(loop Mod 2)
			xoff# = blurradius# * Cos(blurangle#)
			yoff# = blurradius# * Sin(blurangle#)
			PositionEntity blurmesh[loop], blur_cam_x#+xoff#, blur_cam_y#-5.0, blur_cam_z# + yoff#, True
			If loop> 1 Then EntityBlend blurmesh[loop],2
	Next
	RenderWorld
Rect 1,1,ssize-1,ssize-1,0
Rect 0,0,ssize,ssize,0

CopyRect 0,0,ssize,ssize,0,0,BackBuffer(),TextureBuffer(c\texy) 
			For loop = 0 To (blur_quality*4)-1
					FreeEntity blurmesh[loop]
			Next
	
EndIf

;--------------------------------------------------------


ShowEntity g_cam
HideEntity ksh_cam

PositionEntity ksh_cam,EntityX(ligt,1),EntityY(ligt,1),EntityZ(ligt,1)
CameraZoom ksh_cam,.06/scalex#

.skip_blur


EntityTexture c\mesh,c\texy
EntityBlend c\mesh,2
EntityFX c\mesh,1+2+8+16

EntityFX mesh,0
EntityColor mesh,128,128,128
EntityOrder mesh,0
HideEntity ksh_cam 

FreeEntity temp_mesh

.skipc2
FreeEntity shadbox
FreeEntity offset_piv
HideEntity ksh_cam

End Function

Function remove_caster(ent)
For d.kshob = Each kshob
If d\ent=ent Then Delete d
Next
End Function 

Function remove_light(ent)
For d.kshl = Each kshl
If d\ent=ent Then Delete d
Next
End Function 

Function remove_receiver(ent)
For d.kshr = Each kshr
If d\ent=ent Then Delete d
Next
End Function 

Function remove_terrain_receiver(ent)
For d.kshr_ter = Each kshr_ter
If d\ent=ent Then Delete d
Next
End Function 



;--------------------------------------------------------
; dev mode functions
;--------------------------------------------------------
Function create_dev_caster(ent,hi#,fat#,scalex#,piv_offset#)
c_cast=0
For d.ksh_d = Each ksh_d
If d\ent=ent Then c_cast=1
Next
If c_cast=1 Then Goto skip_create_caster
	d.ksh_d=New ksh_d
	d\ent=ent
	d\box=CreateCube()
	d\hi#=hi#
	d\fat#=fat#
	d\sclx#=scalex#
	d\piv=piv_offset#
ScaleEntity d\box,fat#,hi#,fat#
PositionEntity d\box,0,piv_offset#,0
EntityAlpha d\box,.5
EntityColor d\box,0,200,0
	.skip_create_caster

End Function

Function draw_dev_caster(ent,light,g_CAM,x,y)
HideEntity g_cam
ShowEntity ksh_cam
CameraViewport ksh_cam,x,y,ssize,ssize 

For d.ksh_d = Each ksh_d
If d\ent=ent Then 

PositionEntity d\box,EntityX(d\ent),EntityY(d\ent),EntityZ(d\ent)
RotateEntity d\box,EntityPitch(d\ent,1),EntityYaw(d\ent,1),EntityRoll(d\ent,1)
MoveEntity d\box,0,d\piv,0
RotateEntity d\box,0,0,0

offsetpiv=CreatePivot()

PositionEntity offsetpiv,EntityX(d\ent,1),EntityY(d\ent,1),EntityZ(d\ent,1)
RotateEntity offsetpiv,EntityPitch(d\ent,1),EntityYaw(d\ent,1),EntityRoll(d\ent,1)

MoveEntity offsetpiv,0,d\piv,0


PositionEntity ksh_cam,EntityX(light,1),EntityY(light,1),EntityZ(light,1)
PointEntity ksh_cam,offsetpiv
CameraZoom ksh_cam,.06/d\sclx#

RenderWorld()
Color 255,255,255
Rect x+1,y+1,ssize-1,ssize-1,0
Rect x,y,ssize,ssize,0

Text x,y-25,"scaleX: " + d\sclx#
Text x,y-15,"pivot offset: " + d\piv
EndIf

Next
HideEntity ksh_cam
ShowEntity g_cam
End Function 

Function show_dev_caster(ent)
For d.ksh_d = Each ksh_d
If d\ent=ent Then ShowEntity d\box
Next
End Function 

Function hide_dev_caster(ent)
For d.ksh_d = Each ksh_d
If d\ent=ent Then HideEntity d\box
Next
End Function 

Function remove_dev_caster(ent)
For d.ksh_d = Each ksh_d
If d\ent=ent Then FreeEntity d\box : Delete d
Next
End Function 



(oh... this is just a patch I guess... you still need a download of a shaKAL library... just look downwards)

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

new download, first version(Posted 2006-11-27)
YAY! I finally placed up a new download for shaKAL.
http://www.filelodge.com/files/room17/427152/shaKAL%20v01.zip

this is version 0.1
(yup.... finally gonna start giving them numbers)
this has the new library, the old tutorial, and a demonstration of the new terrain receivers.
I'm in a rush... but I hope this is helpful :)

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

A new goal(Posted 2006-11-24)
yup... just like my new goal for deKAL
(hey, c'mon... they work off the same basis! it's just that one is constantly updated!)

I'm going to add terrain shadows! (for blitz terrains)
wouldn't that be nifty?
Like I said in my deKAL log... I've played some Halo recently and WAY too much MorrowWind... I think the blitzterrains are very underused in blitz games... and it's because they seem sooooo uncompatible with so many things I guess... (good shadows, accurate normal mapping, physics... blah blah... blah!)
I've figured out how to work it... I just need to add it into shaKAL. It will work alot like towl meshing.
So towl meshing for terrains, box collision detected meshes for mesh receivers... but the textures will work the same way (same way of calculating the uv map)

Well... Hope this will help... I'll get to work ASAP so I can upload a working demo (with source) ASAP.

REALLY hoping I can help the comunity in some way...
because they help me LOTS!

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

FOUR PART TUTORIAL!!! + updated library.(Posted 2006-11-12)
Yup, here's a four part tutorial on adding my library to a scene...
http://www.filelodge.com/files/room17/427152/demonstration.zip

I hope this is easy to understand,
all opensource, I hope someone can find this useful :)
you'll need to get the required *.decls & *.dll to work with this at:
www.blitzbasic.com/codearcs/codearcs.php?code=1191

good luck, and thankyou for reading :)
-Kevin Laherty

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

another download. Plus dev mode functions.(Posted 2006-11-08)
ERG! the newest download is like 3.2 meg :(
anywho, I've included "development mode" functions...
mainly "create_dev_caster", which creates a fake caster...
instead of casting a shadow, it creates a green box around the object to show the height and width settings for the caster. And "Draw_dev_caster" which renders what the shadow camera is seeing so you can see the scaleing and camera zoom better... (to make sure the object sits inside the viewport)

here it is:
http://www.filelodge.com/files/room17/427152/newer%20test.zip
Hope this helps.

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

new download(Posted 2006-11-07)
http://www.filelodge.com/files/room17/427152/new%20test.zip

This has the new commands that I talked about in it as well as bluring.
Hope it works well.

I have alot of work to do on this tonight.
I hope I can give an update tomorrow.

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

quick update(Posted 2006-11-07)
last night I opened up my library and noticed I was missing some really simple and IMPORTANT commands.. :o
so I added "remove_caster" and "remove_light" commands.

I also played with a blur effect...
it just re-rendered the texture on a box and added 2 layers on-top of it... then looped for the amount of blurring you asked for. It looked nice with a quick 1X blur... but the more blurring made an offset with the texture and made the shadow look wrong...
Well I printed off the blurtexture() command from the archives (by Sswift)... thankyou to devils child to pointing it out :D

I'll update and post a new download soon.

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++

first post - early progress(Posted 2006-11-05)
Hey y'all...
This is my first worklog... I hope this project goes well...
this is all open source...

here is a REALLY early shot I did:


(progress was killed for a while.... my computer died... but I got a new one last week... and started work again 2 days ago)

I did alot of work last night, and now it looks more like this:


you can download my current progress here: (watch out... it's a slow download :( )
http://www.filelodge.com/files/room17/427152/showcase%20shadows.zip

Special thanx to the following people:

Tomas Moller & elias_t - for giving the box>polygon
collision detection to the
blitz comuntity :D

TigerZ -for donating the kickass
3d model balchak to this
project!

to get in touch with me,
you can Email: kalisme@...

and to see my site, you can visit: www.kalisme.tk

I hope I am helpful,
thanx for reading,
-Kevin Amos Laherty

-oh... quick add... I forgot to add:
Get the required *.decls & *.dll to work with this at:
http://www.blitzbasic.com/codearcs/codearcs.php?code=1191

or:
www.freewebs.com/elias_t/tribox_dll.zip

---------------------
my current projects:

...*shrugs*
Learning SDL via DevC++