Initial commit
This commit is contained in:
126
Cinematic.pbi
Normal file
126
Cinematic.pbi
Normal file
@@ -0,0 +1,126 @@
|
||||
Structure Cinestep
|
||||
Value.SpriteObj
|
||||
Duration.l
|
||||
EasingH.l
|
||||
EasingV.l
|
||||
EndStructure
|
||||
|
||||
Structure Cinematic
|
||||
*Value.SpriteObj
|
||||
StartTime.q
|
||||
Duration.l
|
||||
StepIndex.l
|
||||
Loob.b
|
||||
EventGUI.l
|
||||
List Cinestep.Cinestep()
|
||||
EndStructure
|
||||
|
||||
Global NewList Cinematic.Cinematic()
|
||||
|
||||
Procedure AddCinematicStep(*C.Cinematic,Duration,EasingV.l,EasingH.l)
|
||||
Protected *Step.CineStep
|
||||
*Step=AddElement(*C\Cinestep())
|
||||
*Step\Duration=Duration
|
||||
*Step\EasingH=EasingH
|
||||
*Step\EasingV=EasingV
|
||||
ProcedureReturn *Step
|
||||
EndProcedure
|
||||
|
||||
Procedure SetCinematicStepValue(*Step.Cinestep,X.f,Y.f,Width.f=-1,Height.f=-1,Opacity=255,Size.f=1)
|
||||
*Step\Value\X=X
|
||||
*Step\Value\Y=Y
|
||||
*Step\Value\Width=Width
|
||||
*Step\Value\Height=Height
|
||||
*Step\Value\Opacity=Opacity
|
||||
*Step\Value\Size=Size
|
||||
EndProcedure
|
||||
|
||||
Procedure NewCinematic(*SpriteObj,EventGUI=-1)
|
||||
Protected *Cine.Cinematic
|
||||
*Cine=AddElement(Cinematic())
|
||||
*Cine\Value=*SpriteObj
|
||||
*Cine\StartTime=-1 ; No Started
|
||||
*Cine\StepIndex=-1
|
||||
*Cine\EventGUI=EventGUI
|
||||
*Cine\Duration=0
|
||||
ProcedureReturn *Cine
|
||||
EndProcedure
|
||||
|
||||
Procedure RenderCinematics()
|
||||
Protected ElapsedTime.q
|
||||
Protected *Start.Cinestep
|
||||
Protected *Target.Cinestep
|
||||
ForEach Cinematic()
|
||||
If Cinematic()\StartTime<>-1
|
||||
ElapsedTime=ElapsedMilliseconds()-Cinematic()\StartTime
|
||||
|
||||
|
||||
If ElapsedTime>Cinematic()\Duration
|
||||
Cinematic()\StepIndex=Cinematic()\StepIndex+1
|
||||
Cinematic()\StartTime=ElapsedMilliseconds()
|
||||
If Cinematic()\StepIndex>ListSize(Cinematic()\CineStep())-2
|
||||
Debug "End"
|
||||
If Cinematic()\EventGUI>0
|
||||
Debug "PostEventGUI="+Str(Cinematic()\EventGUI)
|
||||
PostEventGUI(Cinematic()\EventGUI)
|
||||
EndIf
|
||||
If Cinematic()\Loob=#True
|
||||
Cinematic()\StepIndex=0
|
||||
Else
|
||||
Cinematic()\StartTime=-1
|
||||
Cinematic()\StepIndex=-1
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
If ListSize(Cinematic()\CineStep())>0 And Cinematic()\StepIndex>=0 And Cinematic()\StepIndex<ListSize(Cinematic()\CineStep())-1
|
||||
SelectElement(Cinematic()\CineStep(),Cinematic()\StepIndex)
|
||||
*Start=Cinematic()\CineStep()
|
||||
SelectElement(Cinematic()\CineStep(),Cinematic()\StepIndex+1)
|
||||
*Target=Cinematic()\CineStep()
|
||||
Cinematic()\Duration=*Target\Duration
|
||||
|
||||
|
||||
If Cinematic()\StartTime<>-1
|
||||
Cinematic()\Value\X=GetEasingPosValue(*Start\Value\X, *Target\Value\X,Cinematic()\StartTime, *Target\Duration, *Target\EasingH)
|
||||
Cinematic()\Value\Y=GetEasingPosValue(*Start\Value\Y, *Target\Value\Y,Cinematic()\StartTime, *Target\Duration, *Target\EasingV)
|
||||
If *Target\Value\Width<>-1
|
||||
Cinematic()\Value\Width=GetEasingPosValue(*Start\Value\Width, *Target\Value\Width,Cinematic()\StartTime, *Target\Duration, *Target\EasingH)
|
||||
EndIf
|
||||
If *Target\Value\Height<>-1
|
||||
Cinematic()\Value\Height=GetEasingPosValue(*Start\Value\Height, *Target\Value\Height,Cinematic()\StartTime, *Target\Duration, *Target\EasingV)
|
||||
EndIf
|
||||
If *Target\Value\Opacity<>-1
|
||||
Cinematic()\Value\Opacity=GetEasingPosValue(*Start\Value\Opacity, *Target\Value\Opacity,Cinematic()\StartTime, *Target\Duration, 0)
|
||||
EndIf
|
||||
If *Target\Value\Size<>-1
|
||||
Cinematic()\Value\Size=GetEasingPosValue(*Start\Value\Size, *Target\Value\Size,Cinematic()\StartTime, *Target\Duration, 0)
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
EndIf
|
||||
Next
|
||||
EndProcedure
|
||||
|
||||
Procedure StartCinematic(*C.Cinematic=0)
|
||||
If *C=0
|
||||
ForEach Cinematic()
|
||||
Cinematic()\StartTime=ElapsedMilliseconds()
|
||||
Cinematic()\StepIndex=-1
|
||||
Next
|
||||
Else
|
||||
*C\StartTime=ElapsedMilliseconds()
|
||||
*C\StepIndex=-1
|
||||
EndIf
|
||||
EndProcedure
|
||||
|
||||
Procedure FreeAllCinematics()
|
||||
ForEach Cinematic()
|
||||
ClearList(Cinematic()\Cinestep())
|
||||
Next
|
||||
ClearList(Cinematic())
|
||||
EndProcedure
|
||||
; IDE Options = PureBasic 6.00 Beta 5 (Windows - x64)
|
||||
; CursorPosition = 74
|
||||
; FirstLine = 37
|
||||
; Folding = --
|
||||
; EnableXP
|
Reference in New Issue
Block a user