Releases: defisym/OpenFusionExamples
FFMpeg_MultiInstance Ext B230110
Multi instance version, requires FMod.
Anime used in this demo video is Nijigasaki idol club S2
FFMpeg Ext B221022
- Bug fix
- fix crash if output pixel format matches input pixel format
- default duration if both format context and stream don't have valid duration
- protection when codec context returns
AV_PIX_FMT_NONE
as pixel format - drain codec context to flush buffered frames
- fix global data memory leak
- fix pause / resume doesn't work due to condition get incorrect finish state
- Enhancement
- optimize file open probe size to speed up opening complex format like mp4
- reduce data convert when accurate seeking frame
- New feature
- on error condition to let you handle errors
- open video to a specific time stamp
- hardware decode
- stretch
- set audio tempo
FFMpeg Ext B220922
- Fix negative duration when stream doesn't contain info
- flag didn't pass into
SetPositionWithFlag
- accurate seek
- optimized to reduce data copy
- get state in A/C/E
- load action file path not updated
- loop action not updated
- Crash in
Expression_GetCurrentVideoFramePointer
- use default value if given Queue size is negative
- reset
frameTimer
after seeking Condition_OnVideoFinish
not trigger- if video is looping, then play state will ignore finish state
- Optimize mem loader
- cache
- filepath not reset after close
- Optimize
SDL_OpenAudio
FFMpeg Ext B220916
- fix volume control not work
- add protection for set position
- crash when load a new video with different resolution
- crash when frame data has padding
- alpha support for mov files
- seek with flag
- set queue size (if default size is not enough then some formats may not play)
FFMpeg Ext B220913
First beta!
首个测试版!
最初のベータ!よろしく♪
Android Utilities Ext B220723
Extract binary files.
FindTheWay Ext B220424
What's new
- Android support!
Note: SetMapByPicture
, SetMapBySurface
is unusable due to platform limitations
- isometric
need not to care about coord conversion, extension will handle it all for you.
- debugger
- Disable incompatible A/C/Es
- new action:
CreateAOEByName
,CreateGrid
,SetGridSize
,SetMapByActive
,SetMapBySurface
Bug fix
- memory Leak in
SetMapByPicture
- protection for null
LPRO
- protection for non active object
- fix
size_t
layer = -1 overflow - fix default layer = 2
- fix possible crash when loading from surface due to
/MT
LPCTSTR
->LPCWSTR
- update map when output
- don't stash if stash is off when finding
Known issue
If you encounter grid offset in android:
please unzip ext and navigate to CRunFindTheWay.java
import static _3rdLib.ObjectCreationClass.GetEvtParam;
import static RunLoop.CRun.OBSTACLE_TRANSPARENT;
public class CRunFindTheWay extends CRunExtension {
// TODO DEBUG
private static final boolean DEBUG = true;
// private static final boolean DEBUG = false;
// Define ACE ID here
// Condition
final int CND_CONDITION_SMBS = 0;
final int CND_CONDITION_SMBB = 1;
then toggle DEBUG flag.
Fini Ext B220415
Fini Update 220415
New features in brief
This update allows you to save/load all alterable values of one object in one event, compatible with 2.5/2.5+/2.5+ allow for string & counter.
Properties
- Settings
- 2.5 Plus
- used when saving object's alterable value, as 2.5+ unlimited alterable values has a different data struct as 2.5
- Allow alterable values for counters and strings
- only available when
2.5 Plus
is checked, to determine save string & counter's alterable value or not
- only available when
- 2.5 Plus
Action
- Load Alterable Value
- load from base64
- Load Position
- load from base64
Expression
- Save Alterable Value
- Save alterable value/string/flag to base64
- Save Position
- Save to base64
FindTheWay Ext B220406
FindTheWay
Description
A* Path Find, open source, 5X faster than Path Finding Object, all runtime compatible.
Properties
This object has no properties
Terminology
-
Map type
- Map is split to two part, terrain & dynamic, you don't need to compare if it's obstacle before handling dynamic part
- the real map will be generated automatically once needed
- Set : terrain & dynamic
- Retrieve : real map & terrain & dynamic
-
Cost
0 ~ 255
, 255 = obstacle, others = path
-
UseRealCoord
- convert input to gird coord
-
UseIterateCoord
- use internal coord in
On ...
events
- use internal coord in
-
Path name
- keep it empty to retrieve last path
Action
-
Continue
- This extension put find/calc area in condition to check if params area valid. If you don't need following actions immediately, use this action to avoid fusion remove the empty event
-
Set Stash
- with this on, path & area will be stashed, then retrieve it with out calculate if states are the same (map/zoc/ignore flag, etc.)
- stash will be clear automatically once map updated
- disable stash will clear everything stashed
- disable this may slightly improve performance as the state hash process is skipped
- disable this if you encounter hash collision
-
Set Map
-
Set Map
-
Set Map By Object
-
Clear Map
-
-
Path
- Iterate Path
-
Area
-
Create Object Zoc
- iterate zoc position for object, auto create zoc area, coord param is ignored
-
Create Object Zoc By Name
- same as above
-
Create Object Zoc By Event
- iterate zoc position for object, trigger
On Create Object Zoc
for you to create real zoc area
- iterate zoc position for object, trigger
-
Set Zoc By Object
-
Clear Zoc
-
Set Unit By Object
-
Clear Unit
-
Iterate Area
-
Create Area Once
-
Create Area By Name Once
-
Create AOE
- Create different AOE area, check appendix for type declaration
-
Condition
-
Map
-
Map Available
- extension maintains a internal class to handle everything. This class will be destructed then re-construct with new params in
Set Map
conditions. If params are invalid, those conditions will return false and all A/C/Es rely on this class will do nothing/return default value, use this to debug
- extension maintains a internal class to handle everything. This class will be destructed then re-construct with new params in
-
Check Map Cost At Coord
-
On Map Update
- once you update terrain or dynamic, extension won't update the map immediately as you may set multiple points
- usually map is updated before find/calc area if needed, then this condition will be triggered
-
-
Set Map
-
Set Map By Size
-
Set Map By Base64
-
Set Map By Picture
-
Set Map By Collision
- you can let extension retrieve collision of layers, or call
On Set Map By Collision
for each gird for you to check & set collisions directly
- you can let extension retrieve collision of layers, or call
-
On Set Map By Collision
-
-
Path
-
Path Found
-
Path Available
-
On Iterate Path
-
-
Area
-
Zoc Valid
- not at obstacle or unit
- need to update unit before using
-
Zoc At Area
- check if zoc at calculated area
-
On Create Object Zoc
-
Calc Area
- Line mode
- no obstacle from start to the range (e.g., laser beam)
allRange
&allRangeAttackRange
are ignored in this mode- if
attack
is true,ignore flag
will be taken into account - if
attack
is false, both map collision & all unit are taken into account, for skills that push/pull unit
- Ring mode
- if
allRange
is true,range
will be used as move range, andallRangeAttackRange
is used as maximum attack range, both move & attack area will be calculated in one short, e.g., danger zone of enemy.
- if
- Line mode
-
On Iterate Area
-
On Iterate Attack Area
- if you
Calc Area
in all range mode, this condition will be true when iterate attack area inOn Iterate Area
- if you
-
Able to Iterate Area
- if you want create areas procedurally by
Iterate Area
with param once, this condition is here for you to check if it is able to iterate.
- if you want create areas procedurally by
-
-
Object
-
Select
-
Select All
- save fastloops when click on an area, move character to that point, then destroy all areas
-
Object At Gird
-
Object At Coord
-
Object At Obstacle
-
Object At Object
- check if former object and the latter object has the same gird coord
-
Pick One Object At Object
- only display one instance when overlapping itself
-
-
Non-Select
- No Object At Gird
- No Object At Coord
-
Expression
-
Iterate
-
this values are shared by all
On ...
events, please do not nest them -
Get Iterate X
-
Get Iterate Y
-
Get Iterate Index
-
-
Gird
- Get Gird Coord
- Get Real Coord
-
Map
-
Get Map Cost
-
Get Map Base64
-
Get Map String
-
Get MapType Map
-
Get MapType Terrain
-
Get MapType Dynamic
-
Get Map Cost Path
-
Get Map Cost Obstacle
-
Get Map Cost Valid
-
-
Path
- Get Step
- the same as
Path Found
but return steps directly, save events when calculation AI
- the same as
- Get Step of Path
- Get Step Coord of Path
- Get Step
-
Area
-
Get Ignore Flag
ignore
means this point doesn't treat as obstacle- A/C/E that requires this param need to update zoc/ally/enemy first to make ignore works properly
-
Get Available Line Range
-
RandomTable FE Ext B220329
- Refactor random table to custom base64 lib instead of windows API
- Implement A/C/Es
- Get N Random Number Average
- Get Current Random Table with
NewLine
Support - Get Random Percent