SFTtech / SFTtech/openage

Vector Curve container

Open
#1,677 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: util lang: c++ nice new thing ☺
Dominant language
Python
Stars
14.4k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

We should add a curve::Vector type to our curve container classes to record changes to sequences over time.

The new vector type should implement these methods:

Read

Method Description
get(t, i) Get value of index i at time t
get(t) Get vector at time t
size(t) Get size of the vector at time t
frame(t, i) Get the previous keyframe (time and value) of index i before or at t
next_frame(t, i) Get the next keyframe (time and value) of index i after t

There should also be an iterator type to iterate over the vector at time t.

Modify

Method Description
insert(t, i, value) Insert a new element at index i at time t
erase(t, i) Erase element at index i at time t
set_insert(t, i, value) Insert a new keyframe value at time t at index i
set_last(t, i, value) Insert a new keyframe value at time t; delete all keyframes after time t at index i
set_replace(t, i, value) Insert a new keyframe value at time t at index i; remove all other keyframes with time t at index i

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue defines a new curve::Vector API but names no files or tests. Start by locating the existing curve container classes and their tests, then follow their conventions for keyframes and iteration; done means the listed read and modify methods, plus vector iteration, are implemented and covered.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.