A tool to create funscripts

Related tags

Graphics OFS
Overview

OpenFunscripter

I swear this is a C++ project despite what the statistic on this repo says 😅

The project is based on OpenGL, SDL2, ImGui, libmpv, & all these other great libraries.

OpenFunscripter Screenshot

How to build ( for people who want to contribute or fork )

  1. clone the repository
  2. cd "OpenFunscripter"
  3. git submodule update --init
  4. cd "lib/EASTL"
  5. git submodule update --init
  6. Run cmake and compile (on windows just use visual studio 2019 with cmake support no need to generate a solution)

Known linux dependencies to just compile are build-essential libmpv-dev libglvnd-dev.
To compile something which runs on x11 and wayland other stuff is needed the snap includes support for both.

Windows libmpv binaries used

Currently using: mpv-dev-x86_64-20200816-git-7f67c52.7z (it's part of the repository)

Platforms

I'm providing windows binaries and a linux AppImage.
In theory OSX should work as well but I lack the hardware to set any of that up.

Comments
  • lua: crash when setting two actions to same position and time

    lua: crash when setting two actions to same position and time

    If 2 actions are set to be at the same position and time, OFS will crash.

    function test()
        script.actions[1].at = script.actions[2].at
        script.actions[1].pos = script.actions[2].pos
        ofs.Commit(script)
    end
    

    OFS should delete the duplicate point at commit instead of crashing

    opened by SleepyPrince 14
  • lua api help

    lua api help

    I am trying to write an extension to filter script actions, which the following actions seem to require more code than expected (or maybe I am just not familiar with lua). Maybe more lua api functions can be added to make life easier.

    1. the RemoveAction function shifts the script.actions indexes. Here's the code I am using to remove multiple selected actions, please let me know if there is an easier way.
    local script = ofs.Script(ofs.ActiveIdx())
    if ofs.HasSelection(script) then
        local to_delete = {}
        for idx, action in ipairs(script.actions) do
            if action.selected then
                table.insert(to_delete, idx-#to_delete)
            end
        end
    
        for i, idx in ipairs(to_delete) do
            ofs.RemoveAction(script, script.actions[idx])
        end
        ofs.Commit(script)
    end
    
    1. I am trying to add some functions that I feel is missing for funscript editing. For example to toggle selection of action at/closest to cursor. Here's the code I came up with.
    function toggle_select(val)
        local script = ofs.Script(ofs.ActiveIdx())
        if #script.actions > 0 then
            local t = player.CurrentTime()*1000
            local closest = player.Duration()*1000
            local i = nil
            for idx, action in ipairs(script.actions) do
                local diff = math.abs(t-action.at)
                if diff < closest then
                    closest = diff
                    i = idx
                else
                    break
                end
            end
            script.actions[i].selected = val
            ofs.Commit(script)
        end
    end
    

    I tried using ClosestActionAfter and ClosestActionBefore, but it still requires quite a few if to find the closest action, and if the cursor is on an action, the 2 functions give you the index of after and before the current action.

    1. OFS could directly return a table of selected indexes instead of having to use for...if script.actions[idx].selected (this is very minor)

    2. There is a typo in the lua api reference, where ofs.SameLine() has a lowercase L.

    3. One more thing, if an extension gui is opened for a long time (maybe 30mins?), it will eventually encounter stack overflow.

    opened by SleepyPrince 8
  • Feature Request: Time spend on a project

    Feature Request: Time spend on a project

    Could OFS calculate and show the time spent on a project?

    It would need to detect if the user is really doing something because I often leave OFS in the background for hours and I wouldn't want that time to be counted.

    I must admit that I hesitated before asking for this feature because I'm not certain that I really want to know... ;)

    enhancement 
    opened by Zalunda 7
  • Unable to run OFS through Snap

    Unable to run OFS through Snap

    Hello Gagax!

    I am running manjaro linux with an nvidia gpu, and am having severe issues running OFS. When running OFS it for some reason finds no video devices? Then if i bypass that, it cannot find the mpv library? My current install runs through snap, but i did try manually compiling it, which didnt fix the missing video device.

    $ glxinfo |grep OpenGL
    OpenGL vendor string: NVIDIA Corporation
    OpenGL renderer string: NVIDIA GeForce GTX 1660 SUPER/PCIe/SSE2
    OpenGL core profile version string: 4.6.0 NVIDIA 470.63.01
    OpenGL core profile shading language version string: 4.60 NVIDIA
    OpenGL core profile context flags: (none)
    OpenGL core profile profile mask: core profile
    OpenGL core profile extensions:
    OpenGL version string: 4.6.0 NVIDIA 470.63.01
    OpenGL shading language version string: 4.60 NVIDIA
    OpenGL context flags: (none)
    OpenGL profile mask: (none)
    OpenGL extensions:
    OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 470.63.01
    OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
    OpenGL ES profile extensions:
    
    $ openfunscripter
    WARN: "/home/username/snap/openfunscripter/x1/.local/share/OFS/OFS_data/config.json" doesn't exist
    ERROR: Error: No available video device
    [1]    3191076 segmentation fault (core dumped)  openfunscripter
    
    $ export SDL_VIDEODRIVER=dummy
    $ openfunscripter
    WARN: "/home/username/snap/openfunscripter/x1/.local/share/OFS/OFS_data/config.json" doesn't exist
    ERROR: Failed to load "libmpv.so.1"
    ERROR: Failed to load mpv library.
    [1]    3226164 segmentation fault (core dumped)  openfunscripter
    
    $ ls /usr/lib | grep -i mpv
    libmpv.so
    libmpv.so.1
    libmpv.so.1.109.0
    

    Thanks, Nodude

    opened by NodudeWasTaken 7
  • Change waveform appearance

    Change waveform appearance

    My audio wave became this since don't know which version. image

    Is there a way to force it back to this appearance? It is very hard for me to read the waveform with the new waveform appearance. image

    enhancement 
    opened by Jimmy3111 6
  • Running lua extension without blocking UI

    Running lua extension without blocking UI

    Is there an option in the lua extension api to run computationally intensive code in a background thread? When i use ofs.Task(functionName) or ofs.Bind(functionName, description) for a lua function which takes longer to run the UI is blocked with a loading animation, waiting for the lua code to complete. With the lua interpreter from the special function / custom functions i am able to run code in background, but for the lua extension I have not found a way to archive this.

    Is it currently possible to execute some code for the lua extension api in the background?

    opened by michael-mueller-git 6
  • Feature Request: Changing the unsaved changes dialog logic

    Feature Request: Changing the unsaved changes dialog logic

    The current dialog in OFS on closing project/opening another project while unsaved changes is detected seems not to be in line with conventional logic.

    Usually when an unsaved file is getting closed, the Yes/No/Cancel dialog would ask if the user would like to save the file or not: Yes - Save the changes and close No - Discard the changes and close Cancel - Don't close

    The current OFS behavior does it the other way round and asks if the use would like to discard the changes: Yes - Discard the changes and close No - Don't close (but also won't save the changes) Cancel - Don't close which I find confusing.

    Also, when drag'n droping another file into OFS when an unsaved project is present, it should be treated as trying to close the current project and load the dropped one. Therefore the same type of dialog shall be shown instead of an alert dialog with "The current project has unsaved edits.".

    opened by trassshhub 5
  • Github actions artifacts have broken mpv dll

    Github actions artifacts have broken mpv dll

    Recently noticed that all github action builds seem to contain a broken mpv-2.dll so they are not able to run. mpv-2.dll file contents:

    version https://git-lfs.github.com/spec/v1
    oid sha256:53cb89a50fc4c99b9f8b14fc1adbe55b78422b8fe2869519bddb88fb150c2643
    size 79424512
    
    opened by Yoooi0 4
  • Load recent project name glyph on start

    Load recent project name glyph on start

    On OFS start up, recent projects with unicode names is not loaded correctly (showing as question marks). I added a AddText call before adding recent project to the menu item to load the necessary unicode glyph.

    opened by trassshhub 4
  • Feature Request: Ability to copy strokes from one script to another

    Feature Request: Ability to copy strokes from one script to another

    Hello!

    I made a compilation from various clips. I already scripted these clips and wanted to just copy over the needed parts into the compilation video.

    This seems to be unfortunately not be possible with OFS. Instead I had to use JFS for this. JFS copied the marked strokes into a clipboard and I could paste it into the new video.

    While this works, and without meaning to say anything bad about JFS, I appreciate OFS now way more overall. So I would love to have the function for OFS as well.

    Would it be possible to add this? Or is there already a way, which I am not aware of?

    Thank you very much!

    Slibowitz

    opened by Slibowitz 4
  • [Feature] option to toggle display of meta data editor on new project

    [Feature] option to toggle display of meta data editor on new project

    Sometimes I would just want to open some videos in OFS to try working/testing on it without creating a project. However the metadata windows always shows up on new video import and has to be manually closed. I added an option to have it togglable.

    opened by trassshhub 4
  • Change default folder for saving heatmap

    Change default folder for saving heatmap

    Is it possible to change the default folder in the file dialog when saving the heatmap from the OFS3 application folder to the folder where the project file resides?

    opened by scriptingsentinel 0
  • QoL feature: Pause Playback upon Navigation

    QoL feature: Pause Playback upon Navigation

    This is brought up by a post in EroScript that I think could be a QoL enhancement.

    When a navigation key (eg. previous/next action, middle mouse button) is pressed during playback:

    Current behavior: Navigation performed but playback continues. Glitching back and forth. 496ddace9eed4632f6b7715c9fc2ad936258a80c

    Suggested Behavior: When a navigation key is pressed during playback, pause playback, and (then) perform the navigation action.

    enhancement 
    opened by ZestyRaraferu 1
  • Chapters remains after closing the project

    Chapters remains after closing the project

    After you close a project all chapters are still visible in the main window (waveform too btw) from the closed project. However, both chapters and waveform are cleared after opening a new video or project.

    bug 
    opened by scriptingsentinel 0
  • File not found dialog shown behind main window

    File not found dialog shown behind main window

    Not a serious issue since the file not found dialog isn't modal, but I thought I should write an issue report anyways.

    Steps to reproduce:

    1. Create or open a project.
    2. Exit OFS.
    3. Move the project folder.
    4. Open OFS.

    OFS will now try to load the latest project and this doesn't exist in the location specified by recent files anymore. The file not found dialog is therefore shown, but it is shown behind the main OFS window and you only hear the exclamation sound from Windows.

    bug 
    opened by scriptingsentinel 0
  • Metadata template settings not restored for new projects

    Metadata template settings not restored for new projects

    I have saved a metadata template in OFS 3.2.0 for use when creating new projects. However, when I create a new project the metadata editor is empty and no template data is loaded as it did in OFS 2.x. I can see (sort of) the saved information in the state.ofs file so it should be there. I pre-populate metadata with creator, url, license and one tag (VR). All other fields are left empty.

    bug 
    opened by scriptingsentinel 1
  • Chapters window delete button default column width

    Chapters window delete button default column width

    There is some issue with the delete button default column width in the chapters window. The size in the picture below was the default size for me. I've resized other columns prior to this but I never touched the delete button column width. I didn't realize that there were delete buttons until I read another issue report posted by someone else and saw a picture of how it should look like. For me the buttons are just small vertical bars due to the minimal column width used. I even responded to someone asking how chapters work that there is a hidden feature for deleting chapters by clicking it (not so hidden if the column width is right :) ). I had to use the table header and change the column widths to see the delete buttons. Resizing the window didn't help.

    I'm using OFS 3.2.0 for this and my previous issue reports.

    bild

    opened by scriptingsentinel 0
Releases(v3.2.0)
Owner
null
A library in Javascript to create graphs in the browser similar to Unreal Blueprints.

A graph node engine and editor written in Javascript similar to PD or UDK Blueprints, comes with its own editor in HTML5 Canvas2D. The engine can run client side or server side using Node. It allows to export graphs as JSONs to be included in applications independently.

Javi Agenjo 3.3k Jan 3, 2023
A personal project that uses DX12 to implement various render techniques to ultimately create breathtaking real-time visuals

D3D12Playground (Real Time) A personal project that uses DX12 to implement various render techniques to ultimately create breathtaking real-time visua

null 3 Apr 27, 2022
The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

DirectX Tool Kit for DirectX 11 http://go.microsoft.com/fwlink/?LinkId=248929 Copyright (c) Microsoft Corporation. All rights reserved. January 9, 202

Microsoft 2.2k Jan 3, 2023
Binary visualization tool primarily aimed at videogame reverse engineering & research.

binviz Binary visualization tool. Allows you to load a binary and pan/zoom around its content. Each byte (or 4 bytes in 4-byte mode) is represented by

Nick Renieris 31 Dec 6, 2022
CatFrida is a macOS tool for inspecting a running iOS app.

CatFrida CatFrida is a macOS tool for inspecting a running iOS app. Building with frida-swift, CatFrida provide an awesome easy way to dive into an ap

neilwu 105 Dec 6, 2022
Linux/X11 tool for intercepting mouse events and executing commands. Written in Kotlin Native.

XMG XMG (X11 Mouse Grabber) is a Linux/X11 tool for intercepting mouse button press events and triggering actions. It's a way of making use of the ext

Eduardo Fonseca 12 Sep 11, 2021
animation2gltf2 is a command line tool for generating animation glTF 2.0 content.

Generate animation glTF 2.0 content animation2gltf2 is a command line tool for generating animation glTF 2.0 content. A rotation and translation can b

UX3D GmbH 6 Dec 7, 2022
The open-source tool for creating of 3D models

The open-source tool for creating of 3D models

3D geoinformation research group at TU Delft 428 Dec 21, 2022
Vis: Asynchronous 3D Visualization Tool

English | 简体中文 Vis: Asynchronous 3D Visualization Tool Vis 是一款交互式异步3D可视化工具,旨在让3D视觉和机器人应用开发更简单。 其核心功能包括: 图形绘制 3D模型文件导入 多种交互工具 Gzimo 安装 Linux # 安装必要的依

RVBUST 117 Nov 2, 2022
Monster Mash: New Sketch-Based Modeling and Animation Tool

Monster Mash is a new sketch-based modeling and animation tool that allows you to quickly sketch a character, inflate it into 3D, and promptly animate it. You can perform all interactions in the sketching plane. No 3D manipulation is required.

Google 1.2k Dec 27, 2022
Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

Ksnip is a Qt-based cross-platform screenshot tool that provides many annotation features for your screenshots.

ksnip 1.5k Jan 4, 2023
3D Procedural Terrain Generation Tool in OpenGL/C++

TerraGen3D 3D Procedural Terrain Generation Tool in OpenGL/C++ Give your valuable feedback : https://github.com/Jaysmito101/TerraGen3D/discussions/6 T

Jaysmito Mukherjee 676 Dec 21, 2022
Simple console tool to get all the information from DXGI and Direct3D 12 on current system

D3d12info Simple console tool to get all the information from DXGI and Direct3D 12 (D3D12) on current system. Built and tested on Windows 10 64-bit us

Adam Sawicki 40 Dec 8, 2022
This tool allow you to create / load / edit models used for create a cinematic in game for World of Warcraft 3.3.5 version

CameraCinematic - Discord Introduction This tool allow you to create / load / edit models used for create a cinematic in game for World of Warcraft 3.

Intemporel 9 Mar 14, 2022
Create a calculator of any kind in any language, create a pr.

calculators Create a calculator of any kind in any language, create a pr. Create a calculator of any type using the programming language of your choic

Akshay Gautam 2 Oct 21, 2022
DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.

DB Browser for SQLite What it is DB Browser for SQLite (DB4S) is a high quality, visual, open source tool to create, design, and edit database files c

null 17.5k Jan 2, 2023
Icopack - A simple command line tool to create multi-frame ICO files from PNG source images

Optidash is a modern, AI-powered image optimization and processing API. We will drastically speed-up your websites and save you money on bandwidth and

Optidash AI 61 Jul 27, 2022
fx is a workspace tool manager. It allows you to create consistent, discoverable, language-neutral and developer friendly command line tools.

fx is a workspace tool manager. It allows you to create consistent, discoverable, language-neutral and developer friendly command line tools.

null 19 Aug 27, 2022