1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00
Robert Beekman 8d9272f47c Layer refactor (#118)
* Expanded Trace logging for Overwatch and RL, updated The Witcher 3 mod for 1.22

* Events WIP

* Moved some views around, added event views

* Implemented events

* Some improvements to Overwatch parsing.. some.

* Improved Overwatch parsing to work well with events

* Fixed ultimate ready false positive during ultimate usage

* Added debug window which currently shows Razer SDK keyboard output

* Expanded Overwatch data model (todo: sticky values to avoid false-positives)

* Added sticky values to Overwatch datamodel, should resolve most flickering/false positives

* Layer refactor WIP

* Moved layer types, animations, conditions and events to interfaces. (WIP)

* Code cleanup, moved all profile related models to their own folder/namespace

* Finished most of the profile refactoring

* More profile refactoring, app compiles again

* Switched from XML to JSON for profiles (refactor broke existing profiles anyway)

* Made animation event expiration generic and fixed all serialization issues I've come across so far

* Cleaned up settings, rigged basic LayerEditorView(Model) to refactored models

* Rigged most layer type viewmodels back up to the new models

* Fixed most view(models).
Added animations to mice and headset.
Replaced serialization-based cloning with NClone
Fixed some rendering issues that came up with refactoring

* Added Current Time to WindowsProfile

* Cloning fixes
Replaced glitchy cloning package with a simple serialization clone (that package looked so good :c)
Removed serialization cloning from render process

* Expanded Trace logging for Overwatch and RL, updated The Witcher 3 mod for 1.22

* Events WIP

* Moved some views around, added event views

* Implemented events

* Some improvements to Overwatch parsing.. some.

* Improved Overwatch parsing to work well with events

* Fixed ultimate ready false positive during ultimate usage

* Added debug window which currently shows Razer SDK keyboard output

* Expanded Overwatch data model (todo: sticky values to avoid false-positives)

* Added sticky values to Overwatch datamodel, should resolve most flickering/false positives

* Layer refactor WIP

* Moved layer types, animations, conditions and events to interfaces. (WIP)

* Code cleanup, moved all profile related models to their own folder/namespace

* Finished most of the profile refactoring

* More profile refactoring, app compiles again

* Switched from XML to JSON for profiles (refactor broke existing profiles anyway)

* Made animation event expiration generic and fixed all serialization issues I've come across so far

* Cleaned up settings, rigged basic LayerEditorView(Model) to refactored models

* Rigged most layer type viewmodels back up to the new models

* Fixed most view(models).
Added animations to mice and headset.
Replaced serialization-based cloning with NClone
Fixed some rendering issues that came up with refactoring

* Added Current Time to WindowsProfile

* Cloning fixes
Replaced glitchy cloning package with a simple serialization clone (that package looked so good :c)
Removed serialization cloning from render process
2016-07-06 20:17:46 +02:00
2016-07-06 20:17:46 +02:00
2016-04-25 18:13:30 +02:00
2016-01-08 20:47:23 +01:00
2016-06-15 15:07:33 +02:00

Artemis

Artemis adds highly configurable support for several games to a range of RGB keyboards, mice and headsets.

Download: https://github.com/SpoinkyNL/Artemis/releases

FAQ: https://github.com/SpoinkyNL/Artemis/wiki/Frequently-Asked-Questions-(FAQ)

Current Features

  • Support for Corsair, Logitech and Razer keyboards.
  • Support for multiple games including Dota 2, The Witcher 3, Rocket League, and CS:GO.
  • Non-gaming effects such as type waves and audio visualization.
  • A layer-based profile system allowing an immense amount of customization.
  • A fancy, modern looking UI with multiple themes.
Currently the following games are supported
  • Counter-Strike Global Offensive (uses native gamestate intergration)
  • Dota 2
  • Rocket League
  • The Division (beta)
  • The Witcher 3
  • Overwatch
The following keyboards are supported
  • All Corsair RGB keyboards
  • Logitech G910
  • Logitech G810 (untested)
  • Logitech G410 (untested)
  • Razer BlackWidow Chroma
Other peripherals
  • All Corsair RGB mice
  • All Corsair RGB headsets

For any keyboards/games/effects we'd love PRs!

Support is planned for

  • Project CARS
  • What you happen to suggest!

For online games we greatly prefer to use an official API, since memory reading is frowned upon by anti-cheat sofware.

Profile editor

For its games Artemis uses a custom-made layer system. For each game you can make one or more profiles consisting of layers that interact with the game. Layers can contain a color, multiple colors, animations and even GIFs!

All this is done in the profile editor. For each game and keyboard we provide a default profile, but you're free to duplicate and modify this, or create one entirely from scratch.

Profile editor screenshot

The screenshot above shows the profile editor as it would appear for CS:GO. The preview shows a rough indication of how the layers will look and allows dragging and resizing. A realtime preview is also shown on the keyboard.

Layers can be reordered or organized into folders by dragging and dropping them. There are multiple layer types

  • Keyboard layer
  • Keyboard GIF layer (Yes, allows you to display a GIF on your keyboard!)
  • Mouse layer
  • Headset layer
  • Folder

A keyboard layer's appearance is controlled by its brush. Brushes can be created using the color picker. For more examples, see the demo profile included in the 'Windows Profile' effect.

Color picker

The above screenshot shows a rainbow gradient made with the color picker.

Layer editor conditions

A layer's properties can be adjusted to react to ingame events and variables. This screenshot shows how conditions can be attached to a layer, in this case this layer is only enabled when the player has more than 14.000 ingame cash.

Besides adding display conditions to layers, it is also possible to base certain properties on what is happening ingame.

Layer editor dynamic properties

In this example, the layer is configured to become smaller when the player loses health. The layer's height is based on the percentage of health left, with the maximum health being 100, shrinking downwards as the health decreases.

To keep things interesting, layers can also be configured to use animations. Here's a preview of the demo profile showing a few of the things possible.

Animations preview

Videos

Rocket League boost display

RocketLeague

The Witcher 3 sign display

Witcher3

Special thanks to:

Description
No description provided
Readme PolyForm-Noncommercial-1.0.0 58 MiB
Languages
C# 77.3%
xml 22.6%