Hi peeps,
Here's another one, in which you can see the letters better.
Also, I've added particles. They move upwards and "phase out" once they go over a certain Y-value

And for those who are interested in the code, here it is:
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
Global cube
Type MagicRingBlueParticle
Field Entity
Field IncrY#
Field Prog#
Field Alpha#
End Type
Type MagicRingBlue
Field Main
Field OuterRing
Field OuterRingTex
Field InnerRing
Field InnerRingTex
Field RotateCenter
Field ParticlePivot[3]
Field RingScale#
Field Prog#
Field Alpha#
Field Counter
End Type
CreateMagicRingBlue(0,0.5,0)
cube = LoadSprite("E:\rain.png" , 1 + 4 ) ; COPYENTITY !!!
EntityColor cube , 0 , 128 , 255
HideEntity cube
; DELETE ----------------------------------------
Plane = CreatePlane()
Tex = LoadTexture ( "E:\rock1.jpg" )
ScaleTexture Tex , 10 , 10
EntityTexture Plane , Tex
EntityFX Plane , 1
PositionEntity Plane , 0 , -0.9 , 0
;------------------------------------------------
AmbientLight 0 , 128 , 255 ; DELETE
camera = CreateCamera() ; DELETE
MoveEntity camera ,0,10,-30 ; DELETE
MB.MagicRingBlue = First MagicRingBlue ; DELETE
While Not KeyHit (1)
Cls
UpdateMagicRingBlue()
UpdateMagicRingBlueParticle()
If KeyHit(59) SaveBuffer(FrontBuffer(),"C:\screenshot1.bmp") ; DELETE
UpdateWorld
RenderWorld
Flip
Wend
End
Function CreateMagicRingBlue(x# , y# , z#)
M.MagicRingBlue = New MagicRingBlue
M\Main = CreatePivot()
M\OuterRing = CreateGrid()
M\OuterRingTex = LoadTexture ( "E:\magicring3.bmp" , 1 + 4 ) ; COPYENTITY !!!
EntityParent M\OuterRing , M\Main
EntityTexture M\OuterRing , M\OuterRingTex
EntityFX M\OuterRing , 1
EntityAlpha M\OuterRing , 0.6
M\InnerRing = CreateGrid()
M\InnerRingTex = LoadTexture ( "E:\magicring2.bmp" , 1 + 4 ) ; COPYENTITY !!!
EntityParent M\InnerRing , M\OuterRing
EntityTexture M\InnerRing , M\InnerRingTex
EntityFX M\InnerRing , 1
EntityAlpha M\InnerRing , 0.6
M\RotateCenter = CreatePivot( M\Main )
M\ParticlePivot[0] = CreatePivot( M\RotateCenter )
M\ParticlePivot[1] = CreatePivot( M\RotateCenter )
M\ParticlePivot[2] = CreatePivot( M\RotateCenter )
M\ParticlePivot[3] = CreatePivot( M\RotateCenter )
PositionEntity M\ParticlePivot[0] , -15 , 1.5 , 0
PositionEntity M\ParticlePivot[1] , 15 , 1.5 , 0
PositionEntity M\ParticlePivot[2] , 0 , 1.5 , -15
PositionEntity M\ParticlePivot[3] , 0 , 1.5 , 15
M\RingScale# = 0
M\Prog# = 0.01
M\Alpha# = 0.5
PositionEntity M\Main , X# , Y# , Z#
End Function
Function UpdateMagicRingBlue()
For M.MagicRingBlue = Each MagicRingBlue
If ( M\Alpha# < 0 ) Or ( M\Alpha# > 1 )
M\Prog# = -M\Prog#
EndIf
M\Alpha# = M\Alpha# + M\Prog#
EntityAlpha M\InnerRing , M\Alpha#
TurnEntity M\OuterRing , 0 , 0.5 , 0
TurnEntity M\RotateCenter , 0 , 20 , 0
If M\RingScale# < 15
M\RingScale# = M\RingScale# + 0.75
ScaleEntity M\OuterRing , M\RingScale# , 1 , M\RingScale#
EndIf
;If ( M\Counter < 1 )
; M\Counter = M\Counter + 1
;Else
MP.MagicRingBlueParticle = New MagicRingBlueParticle
MP\Entity = CopyEntity ( Cube )
MP\IncrY# = Rnd( 0.05 , 0.15 )
MP\Prog# = 0.05
MP\Alpha# = 0.7
EntityAlpha MP\Entity , MP\Alpha#
SeedRnd MilliSecs()
Place = Rand(0,3)
PositionEntity MP\Entity , EntityX#( M\ParticlePivot[Place] , 1 ) , EntityY#( M\ParticlePivot[Place] , 1 ) , EntityZ#( M\ParticlePivot[Place] , 1 )
; M\Counter = 0
;EndIf
EntityParent MP\Entity , M\Outerring
Next
End Function
Function UpdateMagicRingBlueParticle()
For MP.MagicRingBlueParticle = Each MagicRingBlueParticle
MoveEntity MP\Entity , 0 , 0.1 + MP\IncrY# , 0
If ( EntityY#( MP\Entity ) > 25)
If ( MP\Alpha# > 0 )
MP\Alpha# = MP\Alpha# - MP\Prog#
EntityAlpha MP\Entity , MP\Alpha#
Else
FreeEntity MP\Entity
Delete MP
EndIf
EndIf
Next
End Function
; DELETE ---------------------------------------
Function CreateGrid()
Mesh = CreateMesh()
Surface = CreateSurface( Mesh )
AddVertex Surface , -1 , -1 , -1 , 1 , 0
AddVertex Surface , +1 , -1 , -1 , 1 , 1
AddVertex Surface , +1 , -1 , +1 , 0 , 1
AddVertex Surface , -1 , -1 , +1 , 0 , 0
AddTriangle Surface , 0 , 1 , 2
AddTriangle Surface , 0 , 2 , 3
FlipMesh Mesh
Return Mesh
End Function
;-----------------------------------------------
you probably noticed a lot of "Delete"and "Copyentity" that's because I have dozens of these small programs . Each one focuses on a specific part of the whole program. So there's a bit of "overlap", but these are removed once everything is put together.
umm... more screenies are on the way.. stay tuned
