My new documentation site and about where I'm heading :)

Show off your project created with Hollywood

Re: My new documentation site and about where I'm heading :)

Postby Allanon » Wed Apr 26, 2017 10:31 am

A video showing the included examples and some features of the G2D library

YouTube video
User avatar
Allanon
 
Posts: 365
Joined: Sun Feb 14, 2010 8:53 pm
Location: Italy

Re: My new documentation site and about where I'm heading :)

Postby airsoftsoftwair » Wed Apr 26, 2017 8:37 pm

Quite impressive! Don't forget to post the news to other sites as well to spread the word about this great library!
User avatar
airsoftsoftwair
 
Posts: 2090
Joined: Fri Feb 12, 2010 3:33 pm
Location: Germany

Re: My new documentation site and about where I'm heading :)

Postby Allanon » Wed Apr 26, 2017 9:01 pm

Thank you Andreas! I will do, but first here is another shot of another work with the GLGalore plugin (not yet release and not yet completed) :)
The video is a bit laggy due to my laptop but look at the fps counter on the top-left corner :D

YouTube video
User avatar
Allanon
 
Posts: 365
Joined: Sun Feb 14, 2010 8:53 pm
Location: Italy

Re: My new documentation site and about where I'm heading :)

Postby airsoftsoftwair » Thu Apr 27, 2017 5:37 pm

Very impressive! There'll be a new GL Galore version soon with 64-bit support for Windows, Mac OS and Linux!
User avatar
airsoftsoftwair
 
Posts: 2090
Joined: Fri Feb 12, 2010 3:33 pm
Location: Germany

Re: My new documentation site and about where I'm heading :)

Postby Allanon » Fri Apr 28, 2017 8:52 am

That's great!
Any chances to see GL Galore on Pi-like boards?
User avatar
Allanon
 
Posts: 365
Joined: Sun Feb 14, 2010 8:53 pm
Location: Italy

Re: My new documentation site and about where I'm heading :)

Postby airsoftsoftwair » Sun Apr 30, 2017 2:13 pm

Yes, the next version will include support for Linux ARM but on the Pi there's currently only an experimental GL driver which is not active by default. But it seems to work just fine.
User avatar
airsoftsoftwair
 
Posts: 2090
Joined: Fri Feb 12, 2010 3:33 pm
Location: Germany

Re: My new documentation site and about where I'm heading :)

Postby Allanon » Wed May 17, 2017 10:15 pm

Hi!

Here is another request made by @Bugala who was searching for a particle system for the Hollywood's Layers Engine, and I had a library ready for this task. He has asked to put it public so everyone can benefit from it.
I took some time to polish a bit the source code and to write some examples.

INTRODUCTION
The LSprite library is a toolset that uses Layers or Double Buffer technic to bring to the coder an easy to use sprite system, including a a nice particle engine. It supports layers (I mean display levels or planes), it is full supported in Double Buffer mode while with layers it has some limitations.
During the development I've switched to the GLGalore version because of the performances, in fact using OpenGL they are far better than the stock rendering libraries.
Said that, you will understand why the documentation is quite poor and some features are missing.
If there is interest I can backport the missing parts from the GLGalore version to this one, let me know if someone is interested.


Image

WHAT CAN DO THIS LIBRARY?
As said it features a sprite engine able to handle animations, paths, particles, custom actions (recurring or associated with timeouts), and so on... below you can see what functions, objects and methods it offers:

Sprite Engine Object
- pSpriteEngine:Create()
- SEObject:All_DrawOrdered(offsetx, offsety)
- SEObject:All_DrawUnorderedLayered(offsetx, offsety)
- SEObject:All_DrawOrderedInv(offsetx, offsety)
- SEObject:All_DrawUnordered(offsetx, offsety)
- SEObject:All_DrawUnorderedInv(offsetx, offsety)
- SEObject:FindSpriteByName(SpriteName)
- SEObject:YSort_Set(value)
- SEObject:Free()
- SEObject:All_Translate(x, y, Layer)
- SEObject:All_AttributesSet(Attributes, Layer)
- SEObject:All_AttributesAdd(Attributes, Layer)

Simple Sprite Object
These are sprites with a single frame.
- SimpleSprite:Create(engine, name, layer, attributes, filters, image, hardware, brushflag, islayer)
- SimpleSprite:CreateFromText(engine, name, layer, attributes, filters, text, textattrs, textfont, textstyle, textcolor, hardware, extraheight)
- SSObj:ActionAdd(name, atype, func, args)
- SSObj:ActionRemoveAll()
- SSObj:ActionRemove(name)
- SSObj:PathSet(Nodes, Loop, EndEvent)
- SSObj:PathSetNode(NodePos)
- SSObj:PathSetNodeNext()
- SSObj:FadeInvert()
- SSObj:FadeClear()
- SSObj:FadeSet(StartFade, EndFade, Time, Pulse, EndEvent)
- SSObj:ZoomInvert()
- SSObj:ZoomClear()
- SSObj:ZoomSet(StartZoom, EndZoom, Time, Pulse, EndEvent)
- SSObj:RotoSet(StartRoto, EndRoto, Time, Loop, EndEvent)
- SSObj:Update()
- SSObj:Draw(offsetx, offsety)
- SSObj:Hide()
- SSObj:Show()
- SSObj:Move(x, y)
- SSObj:Translate(x, y)
- SSObj:AttributesSet(Attributes)
- SSObj:AttributesRemove(Attributes)
- SSObj:AttributesAdd(Attributes)
- SSObj:Clone(CloneBrush, Hardware, IsLayer)
- SSObj:Free()
- SimpleSprite.Collisions.WithMouse:Set(OnCollision, OnCollisionStart, OnCollisionEnd)
- SimpleSprite.Collisions.WithMouse:Clear(OnCollision, OnCollisionStart, OnCollisionEnd)

Complex Sprite Object
These are sprites with a multiple frames an d multiple animation sequences.
This object includes all the SimpleSprite's methods.
- ComplexSprite:Create(engine, name, layer, attributes, filters, animations)
- CSObj:AnimStop()
- CSObj:AnimResume()
- CSObj:AnimStart()
- CSObj:Update()
- CSObj:AnimFrameNext()
- CSObj:AnimFramePrev()
- CSObj:AnimSetSequence(sequence, EndEvent)
- CSObj:Draw(offsetx, offsety)

Particle System Object
- ParticleSystem:New(engine, layer, emitter, gravity, textures, partinfo, Rate, Active, IsLayer)
- PS:EmitON()
- PS:EmitOFF()
- PS:Move(x, y)
- PS:Free()

Particle Object
- Particle:Create(PartSys)
- Part:Update()

INCLUDED TESTS as functions
TEST_01_Particles_And_Layers()
Shows how you can build a particle system using layers, here it is to have a quick idea:
Code: Select all
  /**** EXAMPLE 01 *********************
   * Using Particle System with Layers *
   *************************************/
   
  ; Enable the layers system
  EnableLayers()
 
  ; Create a Sprite Engine
  Local se = pSpriteEngine:Create()
 
  ; Disable Y Sprite Sorting
  se:YSort_Set(False)
 
  ; Load 2 brush we will use as particle for the first system (ps)
  Local bid1 = LoadBrush(Nil, "resources/blob.png", { LoadAlpha = True })
  Local bid2 = LoadBrush(Nil, "resources/blib.jpg")
 
  ; Now we create 3 particle systems
  Local ps  = ParticleSystem:New(se, 0, { x = 400, y = 300, Rate = 40, Quantity = 1 }, { y = 0.01, Velocity = 0.01 }, { Brushes = True, Items = { bid1, bid2 } }, { Life = 3000, LifeVar = 2000, Scale1 = 1, Scale2 = 0.1 }, 15, True, True)
  Local ps2 = ParticleSystem:New(se, 1, { x = 250, y = 300, Rate = 9, Quantity = 1 }, {}, { Brushes = False, Items = { "resources/blib.jpg" } }, { Life = 2000, AngleVar = 40, Angle = 10, Roto1 = 20, Roto2 = 90, Scale1 = 1, Scale2 = 5 }, 20, True, True)
  Local ps3 = ParticleSystem:New(se, 2, { x = 150, y = 300 }, {}, { Brushes = False, Items = { "resources/nuvola.png" } }, { Life = 1000 }, 10, True, True)

  ; This interval is needed to update constantly the particles
  Local rendering = SetInterval(Nil,
                      Function()
                        ; Attach one particle system to the mouse pointer
                        ps.Emitter.x = MouseX()
                        ps.Emitter.y = MouseY()
                       
                        ; Updates all defined sprites
                        se:All_DrawUnorderedInv()
                       
                      EndFunction , 15)
 
  ; Wait for events until ESC key is pressed
  While Not(IsKeyDown("ESC"))
     WaitEvent()
  Wend


TEST_02_Particles_And_DoubleBuffer()
Shows how you can build a particle system using the Double buffer

TEST_03_SimpleSprite_And_Layers()
Shows how to build a particle system and a simple sprite using layers

ABOUT THE INCLUDED EXAMPLE
The included example shows in details how to build a particle system (as requested by @Bugala), all parameters are commented and explained.

DOWNLOAD
Download the library from here

This library is FREE but donations are welcome, especially if you need more docs, examples and backporting of the new features added in the GLGalore version.
It would be a great help for me if you could consider the possibility to support me on Patreon, I've updated the rewards adding more stuff!
My treasure box isn't empty yet, stay tuned! :D
User avatar
Allanon
 
Posts: 365
Joined: Sun Feb 14, 2010 8:53 pm
Location: Italy

Re: My new documentation site and about where I'm heading :)

Postby airsoftsoftwair » Thu May 18, 2017 10:58 pm

Very interesting project, looks great!
User avatar
airsoftsoftwair
 
Posts: 2090
Joined: Fri Feb 12, 2010 3:33 pm
Location: Germany

Re: My new documentation site and about where I'm heading :)

Postby Allanon » Wed Jun 28, 2017 4:51 pm

Hello all!
I've published a video showing my DemoEngine for Hollywood, you can see it here :
https://youtu.be/m5IrJiZzEDo
The quality is not very high because my notebook is not fast enough to run the demo showcase and the recording software at the same time so I've reduced the demo frame rate.

I've used this library to make a demo for the IndieGO! campaign, here is the demo running on a Raspberry Pi3 :
https://www.youtube.com/watch?v=b54VqHmwBOo

List of classes and methods available at this time:
CLASS DEng
Code: Select all
    .MakeGradient(colorlist, steps)
    .MakeCopperBar(params)
    .MakeGradientTable(colorlist, steps)
    :new()
    :init(params)
    :setClearColor(ARGB)
    :draw()
    :objectAdd(object)
    :objectRemove(object, free)
    :objectCleanup()
    :objectSwap(object1, object2)
    :stackPushUp(object)
    :stackPushDown(object)
    :stackShiftUp()
    :stackShiftDown()


CLASS DEng.Twister
Code: Select all
    :new(params)
    :draw()


CLASS Deng.Plasma
Code: Select all
    :new(params)
    :update() - called by :draw()
    :draw()
    :free()


CLASS DEng.BMFont
Code: Select all
    :new(params)
    :free()


CLASS DEng.BMFText
Code: Select all
    :new(params)
    :draw()


CLASS DEng.Shape
Code: Select all
    :new(params)
    :draw()


CLASS DEng.Brush
Code: Select all
    :new(params)
    :clean()
    :hsplit(size)   Return a table of brush objects
    :vsplit(size)   Return a table of brush objects
    :hvsplit(size)  Return a table (matrix) of brush objects
    :free()


CLASS DEng.RainbowLine
Code: Select all
    :new(params)
    :draw()
    :free()


CLASS DEng.Starfield
Code: Select all
    :new(params)
    :draw()


CLASS DEng.ScreenBuffer
Code: Select all
    :new(engine, params, objList)
    :draw()
    :free()


CLASS DEng.RotoLines
Code: Select all
    :new(params)
    :draw()


CLASS DEng.Hyperspace
Code: Select all
    :new(params)
    :draw()
    :free()


CLASS Deng.Waves
Code: Select all
    :new(params)
    :draw()


CLASS Deng.C64Raster
Code: Select all
    :new()
    :draw()
    :free()


CLASS DEng.Checkers
Code: Select all
    :new(params)
    :draw()


CLASS DEng.DotScroller
Code: Select all
    :new(params)
    :draw()


CLASS DEng.MCircles
Code: Select all
    :new(params)
    :draw()
    :free()


At this time the library is available under request (free for Patreons, asking a pay-as-much-as-you-like for all the others), the documentation has not been written yet because I'd like to know if there is interest before starting to write docs.
So if you are interested let me know!
User avatar
Allanon
 
Posts: 365
Joined: Sun Feb 14, 2010 8:53 pm
Location: Italy

Re: My new documentation site and about where I'm heading :)

Postby airsoftsoftwair » Sat Jul 01, 2017 10:18 pm

That's very cool, the return of the demo maker! I think this product could be marketed as the first demo maker on the Amiga that is RTG-compliant and doesn't bang the hardware :)
User avatar
airsoftsoftwair
 
Posts: 2090
Joined: Fri Feb 12, 2010 3:33 pm
Location: Germany

PreviousNext

Return to Showcase

Who is online

Users browsing this forum: No registered users and 2 guests

cron