ATVO by Appgineering
Download
Pinned Read-only

Preview: Official ATVO Theme 2020

90 posts 67,607 views Started 01 May 2020, 21:47
Showing 1–90 of 90 posts
Nick Thissen Appgineering
Original poster
· edited

Update: a first preview of this theme has now been released! You can download it here:
Download theme

Please read the instructions file first! Before opening the theme you may need to install the Roboto font as a system font. It is included in the download.

Make sure you're on the latest stable or beta channel!


Due to popular request, we have finally spend some time designing our own ATVO Theme which will soon be included with ATVO. Here is a preview of the theme in action, showing some of the available features. Please keep in mind this is still under development and some things are still missing or incomplete.

The theme is made with the Theme Editor and you will be able to view and edit it as you wish. This is a good opportunity to learn how to use some of the more advanced features!

Here is a list of things that are included so far, and features which are used:

Advanced tickers: vertical and horizontal, with variable data shown (switching between gaps, intervals, pitstops, etc) and variable class filters (choose which class to show). Including mix of static and variable vertical ticker.
Advanced animations: combinations of sliding, scaling and fading create clean and professional looking animations. Including things like an expanding / collapsing horizontal ticker that shows more or less information on demand.
Grid & results "scrolling paging tickers": a custom effect using a small bit of scripting and animations to slide a long ticker vertically at certain intervals to mimic a "next page" scrolling action. The next page animation effect is started manually by a button.
Full use of new features such as the condition flags, storyboards, clipping and more.

Jean-Christophe B.
Reply #1

Thank you, it will be useful to improve our current theme :)

Emmanuel S.
Reply #4

Thanks, I need to see how you use animation, it actually difficulties with animation ;)

Christian S.
Reply #5

Just as question Nick,

Will it be possible to copy/paste those animations, or edit the theme, that we could use them in our personal themes?

btw, is it hard to create the animations ? Which software are you using to create them? :)

Nick Thissen Appgineering
Reply #6
· edited

Everything is made in the Theme Editor including animations. You can edit them as you wish and see how they work. Copy/pasting is a bit more tricky because how the animations are defined depends directly on which widgets you are animating. For example, to do the "expand from 0 to total width" animation, I do the following:

  • Create new animation with "ScaleX" element.
  • Go into ScaleX properties and change the CenterX property to the left-most coordinate of the widget. Meaning: if the widget is 400 pixels wide, then the CenterX is set to -200. This moves the center of the animation to the left, which makes the scale animation expand to the right, rather than expand from the center in both directions. If your widget has a different size, this value has to be adjusted.
Christian S.
Reply #7

Thanks Nick for the fast reply,

Ok, i got that and that's no problem.
Just, how do i bind the animation to a widget, ?

  • Do I have to call the widget in the animations Control Tab, or
  • Do i have to call as example the animation by a button and set the animation as Target, and the widget as value?

When I'm testing the animation with default settings in theme editor, no animations happens. ScaleX, with CenterX at 0, it should scale from the middle to the left and right.

Nick Thissen Appgineering
Reply #8

Christian S. wrote:

  • Do i have to call as example the animation by a button and set the animation as Target, and the widget as value?

Yes. Use the Animations - Play action. The Target is which animation to play, and the Value is which Widget you want it to animate.

**Christian S. wrote:**When I'm testing the animation with default settings in theme editor, no animations happens. ScaleX, with CenterX at 0, it should scale from the middle to the left and right.

The animations don't play in the editor, unless you are in the Animation Editor which allows you to select a widget to preview the animation.

Christian S.
Reply #9
· edited

Hmm, I've tried in the Animation Designer, an it's not animating.
I do well believe that the problem of the animation ist 70cm away from the computer screen ;)

Maybe you can have a look at those 2 pictures, thats how i set the animation up



I've mapped it to a button too, exported it, and atvo is neither making an action

Nick Thissen Appgineering
Reply #10

You also have to click the two keyframes and change what value they should be animation to/from. You can also add more keyframes in between if desired. By default the scaling animations have their keyframe values set to 1 (meaning 100% of the original scale) so it doesn't do anything. If you change one of them to 0 (or something else) you should see it animate.

Emmanuel S.
Reply #12

On my computer I do a lot of test, I understand the logical, and it is ok when I test on Animation module but when I use it on theme, opacity or movement do nothing and the widget comes in one step flash at is final position. (I try to make quick, slow animation)

Rich P.
Reply #13

This is looks great. Looking forward to checking it out.

What standard font and size did you use for this theme? Also how do you get text to capitalize for the names?

Nick Thissen Appgineering
Reply #14

The font is Roboto, size between 16 - 20 for most things I think.

You can capitalize text by setting Character Casing to Uppercase on any label (under Display category).

Rich P.
Reply #15

Thanks Nick! I have noticed that when I set the default font to one I have uploaded to the theme it keeps resetting back to Arial on reopening the them. I have to define the font for each of the Labels for it to stay attached. Am I missing something I need to do?

Nick Thissen Appgineering
Reply #16

Hmm, that is strange. I have found that in some cases it works better to just install the font you want instead of adding it in the theme, especially if the font has multiple variants. I'll see if I can spot the bug for the fonts and if not maybe work on another method to add the fonts.

Rich P.
Reply #17

So to confirm the general font list is taken from the computer designing then theme. If the exported theme is then used on another computer and the font not attached then it will not show up correctly? Unless the font is installed on the computer using ATVO. Thanks.

Nick Thissen Appgineering
Reply #20

It's almost ready for a first release, just some final details to fix up. Expecting this weekend!

Shawn F.
Reply #23

Nick Thissen wrote:
It's almost ready for a first release, just some final details to fix up. Expecting this weekend!

Is there an updated timeline on when we could see this released?

Nick Thissen Appgineering
Reply #24
· edited

Sorry, I found some further bugs in the flag event trigger system which I would like to fix as this theme also makes use of them. After that it is pretty much ready for a first release.

Nick Thissen Appgineering
Reply #25
· edited

A first preview of this theme has now been released! You can download it here:
Download theme

Please read the instructions file first! Before opening the theme you may need to install the Roboto font as a system font. It is included in the download.

Make sure you're on the latest stable or beta channel!

The theme contains the Theme Editor source and the exported version. Use the Theme Editor source to see how it was made.

Note that there may still be some items that are not fully working. Please leave your feedback for this theme in this thread and we will see if we can address it. Once we are happy with the theme, we will look into including it with ATVO by default.

Emmanuel S.
Reply #26

Whaou .... I spend so many time to do something and I saw I can do it better with your exemple !!!

I have to look everithing but it is so intersting how you made that.

--> ERASE ---> RESTART (summery of what I have to do )

Jeremy K.
Reply #27

Thanks so much for working on this Nick! I'm really looking forward to reverse engineering this so I can get the most out of this awesome tool.

Unfortunately, I just tried loading the .adt file and the theme in the editor, but I'm getting the same error:

Requested value 'Storyboard' was not found.

Here's the full log:

Error: 6/14/2020 3:11:40 PM (UTC)
Unhandled exception
System.ArgumentException: Requested value 'Storyboard' was not found.
  at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument)
  at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
  at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
  at ATVO.ThemeEditor.ThemeModels.Actions.ActionProvider.Get(String typeName, IController controller) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ThemeModels\Actions\ActionProvider.cs:line 40
  at ATVO.ThemeEditor.ThemeModels.Actions.ActionProvider.Deserialize(XElement element, IController controller) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ThemeModels\Actions\ActionProvider.cs:line 47
  at ATVO.ThemeEditor.Utils.ActionUtil.DeserializeActions(IController controller, XElement element) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\Utils\ActionUtil.cs:line 25
  at ATVO.ThemeEditor.ThemeModels.ControlButton.Deserialize(XElement element, Boolean convertName) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ThemeModels\ControlButton.cs:line 85
  at ATVO.ThemeEditor.ThemeModels.Serialization.ThemeSerializer.ReadTheme(XDocument doc, Theme theme) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ThemeModels\Serialization\ThemeSerializer.cs:line 217
  at ATVO.ThemeEditor.ThemeModels.Serialization.ThemeSerializer.LoadTheme(String path, String encryptedFilepath, Boolean isInEditor) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ThemeModels\Serialization\ThemeSerializer.cs:line 95
  at ATVO.ThemeEditor.ViewModels.MainMenuViewModel.OnOpenThemeInternal(String path) in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ViewModels\MainMenuViewModel.cs:line 331
  at ATVO.ThemeEditor.ViewModels.MainMenuViewModel.OnOpenTheme() in D:\Users\Nick\Documents\Programming\ATVO\Appgineer.in-TV-Overlay-for-iRacing\ATVO.ThemeEditor\ViewModels\MainMenuViewModel.cs:line 306
  at Prism.Commands.DelegateCommand.<>c__DisplayClass1_0.<.ctor>b__0(Object o)
  at Prism.Commands.DelegateCommandBase.<>c__DisplayClass6_0.<.ctor>b__0(Object arg)
  at Prism.Commands.DelegateCommandBase.<Execute>d__15.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
  at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
  at Prism.Commands.DelegateCommandBase.<System-Windows-Input-ICommand-Execute>d__13.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.<ThrowAsync>b__6_0(Object state)
  at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
  at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
Nick Thissen Appgineering
Reply #28

Make sure you're on the latest stable or beta channel!

Jeremy K.
Reply #29

Aha! I had upgraded to the 1.30 Alpha ..

I just set the Update channel to Stable and I was prompted to downgrade to 1.29.

The theme loaded!

I will have fun exploring this for a while ..

Thanks again for putting this together!!!! This is so helpful.

-Jeremy

Christian S.
Reply #30
· edited

Sorry, missed your new post....

"Just out of curiosity, will you only make the .adt file available, or also the whole theme in Theme editor?

Theme editor would be quite interesting, because we could have a look inside it, an see how some animations, triggers e.t.c. are done ?"

Nick Thissen Appgineering
Reply #31

The link I shared has the full Theme Editor source so you can see how it's made and edit it!

Emmanuel S.
Reply #32
· edited

I test it on one of the big 6h endurance in iracing yesterday. It is ok, animations are nice and full personalisable information on some widget are very intersting. I look how you do and I'm very "exiting" to reproduce some of theme ;)

I notice the problem if you try to show a empty Class in ticker, after system go slowly.

I reproduce the animation of results panel on my theme. But my subwidget get some background picture and LOGO car in dynamic. And quickly it take a lot of "capacity computer" and ATVO begin to go slowly (ATVO windows take time to answer more and more). So I suppose additinal picture or dynamic image are not recommended for this sort of ticker.

Emmanuel S.
Reply #33

I have a look on a lot of your logical for differents things. The loader ticker at the begening, logical with condition flag for Best Lap .... change ticker from static to paging if more than 3 classes .... a lot of solution we can take for exemple to do different things :)

Emmanuel S.
Reply #34

Some other test, it seems to have a little bug when you pass from DRIVER to COMPARE

Niclas D.
Reply #36

It is a nice theam, but it looks to have some preformans issue, as it uses about 1gb of ram, and it is having a data fps of 3-5 and data delay of 300-400 so atm it is not realy usebule.

I am using the Stable version of ATVO on Beta it just frezz.

And my other overlays are not having this data delays.
I do still have 4-5 gb of ram to use, so i dont realy know were the issue is?

Nick Thissen Appgineering
Reply #37

I don't have any of these issues. Did you change anything on the theme?

Niclas D.
Reply #38

I have don one were i did that, but to make sure that it was not any to my chances i downloaded the original version and did try again but yea 1 gb and fps data 3-5 and delay of 300-400

Niclas D.
Reply #39

restall of ATVO did help, but not on my chanced version, but the normal one

Robert A.
Reply #40

Not sure if this is just me or not but I was looking at this theme and playing around with it and I see when you hit the replay or instant replay the game gets a lot of lag to the point I can see on my atvo I'm getting 10 to 15 fps.

Nick Thissen Appgineering
Reply #41
· edited

What is lagging, the game or ATVO?

And no I don't have any of these issues. Not sure why... Are you on limited hardware or something and is iRacing using up all your resources (CPU/GPU)?

Niclas D.
Reply #42

It is ATVO it is unresponsiv, and laggy, sometimes i cant close it, and have to force close it.

I have a Razyn 2600 and a 1660 super, when i am running iracing i my cpu is on like 30% and gpu at 60%, and it is the data FPS that is down, but also the data lag. I did try with one of my other overlays with more pictures and overall bigger files, and no issue at all. But it is mostley with the one i have modifided from youres, but it is not that mutch that this ATVO lag makes any sens.

Robert A.
Reply #43

Nick Thissen wrote:
What is lagging, the game or ATVO?

And no I don't have any of these issues. Not sure why... Are you on limited hardware or something and is iRacing using up all your resources (CPU/GPU)?

Both but no im running a 3700x with a 2070sc card with 16gb or ram. When I click on the replay button it's show on the bottom of atvo my frames drop too 10 to 15 fps then it's makes my game lag till I click on iracing screen or some were on my desktop to make it stop. If you look at the 17.00 mark you see I have a mp4 file to play for the replay when I click on it https://youtu.be/yrc9w7Svyzo

Robert A.
Reply #44

Also how do you code it to show colors of position changes in the tickers?

Emmanuel S.
Reply #45

It is with Overrides in widget or subwidget or label, you select binding ClassColor and the color take the color of the class, you can do it for background, font color ....

Robert A.
Reply #46

Emmanuel S. wrote:
It is with Overrides in widget or subwidget or label, you select binding ClassColor and the color take the color of the class, you can do it for background, font color ....

Thanks also I played a little bit more nick and found out on the lag it's got something too do with my replay file I tryed yours and it works just fine

Robert A.
Reply #47

Emmanuel S. wrote:
It is with Overrides in widget or subwidget or label, you select binding ClassColor and the color take the color of the class, you can do it for background, font color ....

So that shows car overtaking pos?

Emmanuel S.
Reply #50

With no script, you have only the information of gain or loose position from start. So it is not simply to show when a car change of position.

Niclas D.
Reply #52

After doing a rework in a new theme, i found that the way the Grid is made atm has been the issue for me, after a rework of it the program has been running smoothly after that

Nick Thissen Appgineering
Reply #53

Robert A. wrote:
Also how do you code it to show colors of position changes in the tickers?

What do you mean with "colors of position changes"? Do you mean you want to react to a position change and momentarily show a different color or something? That is not easily possible. Perhaps with a complicated script but it will not be easy.

Robert A. wrote:
Emmanuel S. wrote:
It is with Overrides in widget or subwidget or label, you select binding ClassColor and the color take the color of the class, you can do it for background, font color ....

Thanks also I played a little bit more nick and found out on the lag it's got something too do with my replay file I tryed yours and it works just fine
What is the difference? Is your video very large in size?

Niclas D. wrote:
After doing a rework in a new theme, i found that the way the Grid is made atm has been the issue for me, after a rework of it the program has been running smoothly after that

What was the difference that made it run smooth again?

Niclas D.
Reply #54

Not having the 30+ on the ticker, but it also means that I chanced the animation so it is not scrolling anymore. I am also using backgrounds, but this way it doesn't have to load all the information at once. This is what I have found

Gael B.
Reply #55

I tested out the ATVO Theme yesterday, it looks great, I really like it. I had some intermittent issues however on the replay portion of its use. I use SimRacingApps to control cameras etc, and so when I press pause on SRA, the ATVO replay video pops up, and sometimes it works correctly, other times it freezes up completely and I had to close ATVO theme and re-open it to resolve the issue.

Not sure if anyone else is running into this?

Gael B.
Reply #56

Oh, one other thing I noticed! I was going through the results after the race, and they all say "Pit" next to driver name instead of the intervals, is that something that can be adjusted?

Juan F.
Reply #57

This overlay would be perfect if two more buttons were added, one with the circuit intro and one with the track temperature, or a mix of both. If anyone can help, or knows how to add it easily, I'd appreciate it.

Nick Thissen Appgineering
Reply #58

Gael B. wrote:
I tested out the ATVO Theme yesterday, it looks great, I really like it. I had some intermittent issues however on the replay portion of its use. I use SimRacingApps to control cameras etc, and so when I press pause on SRA, the ATVO replay video pops up, and sometimes it works correctly, other times it freezes up completely and I had to close ATVO theme and re-open it to resolve the issue.

Not sure if anyone else is running into this?

Can you try it on the latest alpha build? I improved the video support maybe that solves it.

Gael B. wrote:
Oh, one other thing I noticed! I was going through the results after the race, and they all say "Pit" next to driver name instead of the intervals, is that something that can be adjusted?

Probably it's a mistake in the converter script. It should probably check if the race or driver has finished somewhere instead of blindly spitting out "Pit".

Juan F. wrote:
This overlay would be perfect if two more buttons were added, one with the circuit intro and one with the track temperature, or a mix of both. If anyone can help, or knows how to add it easily, I'd appreciate it.

Should be relatively easy to add I'd say!

Gael B.
Reply #59

Yeah, let me give it a try. The theme is amazing, really appreciate everything you've been doing!

Eddie A.
Reply #60

Does anyone know what the ET_Preload, ET_FlagCheckered ,etc buttons do on the overlay?

Nick Thissen Appgineering
Reply #61

They're not buttons, just visual representations of the event triggers. They show the last time that they were triggered, and possibly also some border at the moment they get triggered. I'm not sure how useful that is, if you don't want to see them you can always uncheck their 'Visible' property to hide them.

Jeremy K.
Reply #62

Hey Nick, I'm finally starting to dig into the custom ATVO theme you've provided so that I can understand how it works and then start fine tuning it for my own use.

A huge thanks again for putting this together. It's clean, it's comprehensive and looks really professional. I have a few specific questions and feedback but I'll save that for a separate post.

This post is to comment on how much I appreciate that this exists.

The custom buttons and animations to switch from Horizontal to Vertical ticker is really sweet, as is the Compare box.

And it was also a nice surprise to see the default behaviour of the fastest lap coming up on screen when the conditions were met.

My next step is to customize this for my own use, and so I'll create new posts to help me understand some of the specific aspects of the theme and how it works.

Thanks again!

-Jeremy

Jeremy K.
Reply #63
· edited

Trying to understand the Compare Box

Ok, so here's my first question of something I've encountered, and not sure if I'm doing something wrong, or if it is a small bug with the theme.

I was recently testing the ATVO theme while watching a race, and I brought up the Compare box.

The first image is what I saw, and it appears that the time delta being presented is off by one position.

I fixed this by going to W_DriverInfoComp and changing the Data Offset to +1

Eventually, I'm going to want to create for myself a "CompareFront" and "CompareBack" so that I can control if i'm showing the delta for the car behind or in front of the car i'm focused on, but I first want to make sure I'm understanding this widget correct.

Is my adjustment correct? or does it behave a different way?

Thanks!



Jeremy K.
Reply #64

Compare box question #2

Maybe this question/issue is related to my first.

During the same race, I clicked the Compare -> Single and Single-> Compare control buttons, but nothing happened.

I expected that would create an animation going from the single driver info overlay for the followed car to the compare box by sliding the Single box to the left and bringing on the info for the second car. But this wasn't working for me.

I tried with the most recent Stable build, since I was getting lots of error messages with the latest Alpha and Beta builds.

Even if I click the buttons in the Theme Editor, the drop-down in "Control - Actions" says None .. so it appears that the buttons are not connected to any action.

Is this part of the theme that is still under development? It's definitely a feature I would use .. and one of my first modifications for my own theme would be to add "CompareAhead" or "CompareBehind" so that depending on which car i'm currently following, if there's a close battle i can easily show the delta for the most appropriate battle happening on camera ..

But I don't want to get ahead of myself :) Are the Compare->Single/Single->Compare buttons not meant to be hooked up in this first release?

Thanks!
-Jeremy

Jeremy K.
Reply #65

Results page showing "PIT" after checkered.

I think this question was asked earlier, but I don't think I saw how to fix it.

Following a race, I'm displaying the Results page, and it's showing "PIT" once the driver has crossed the Finish line.

Is there an easy way to have their time and all the intervals persist?

I know this is an issue, even for apps like Crew Chief .. and when drivers leave the session, all of the positions that are announced get confused.

Would it be necessary then to write the results to a table somewhere so they can persist even after the driver leaves the session?

I don't know anything about scripting .. so i'm not sure if i'm ready to jump into that just yet .. unless it's the best way to do it . .then i'm willing to learn :)

Thanks!
-Jeremy

Nick Thissen Appgineering
Reply #66

Thanks for the feedback Jeremy. Once I have some more time I may work on the theme a bit further, indeed there are some small bugs and missing features I still want to add.

Compare box: I think you are right and the gap / interval should be with Data Offset of 1. Thanks!

Single / Compare animation: indeed something I planned to add but did not get around to. It is not hooked up.

PIT after the race: I think it is simply a bug / mistake in the "GapBindingConverter" script. It should first check if the race is finished, and if it is then it should not check for cars in the pits. I believe the gap / interval is correct after the race, we fix it at the final gap at the line (the one iRacing tells us after the race). The script is simply not reaching that part of the code and returning "PIT" because the cars are listed as in the pits after they escaped from the track.

I believe this is a simple fix that will keep showing intervals after a car has finished. Just replace the first part of the "ConvertToGapOrInterval" function on line 158 with this, which checks for "Finished" in addition:

// show OUT/PIT in a race
        	if (r.Session.Type == SessionType.Race)
            {        	
            	// If we are still racing, then check for OUT or PIT
            	if (!r.Finished)
            	{
	                if (r.Out)
	                    return "OUT";
	                if (r.Entity?.Car?.Movement?.IsInPits == true)
	                    return "PIT";
                }
            }
Jeremy K.
Reply #67

I believe this is a simple fix that will keep showing intervals after a car has finished. Just replace the first part of the "ConvertToGapOrInterval" function on line 158 with this, which checks for "Finished" in addition:
// show OUT/PIT in a race
if (r.Session.Type == SessionType.Race)
{
// If we are still racing, then check for OUT or PIT
if (!r.Finished)
{
if (r.Out)
return "OUT";
if (r.Entity?.Car?.Movement?.IsInPits == true)
return "PIT";
}
}

I can confirm this script modification works! Thanks!

A future modification I will want to look at is to change the text to "Winner" after checkered flag (instead of "Leader") .. but my focus is on other things which i will add to a new post.

Jeremy K.
Reply #68

Nick, as I start to dig in more to the theme you provided, I'm more and more impressed. I'm making lots of progress, and learning lots about Storyboards, Sub-widgets, animations and scripts.

My first modification has been to look at providing two options for "Compare" .. so that depending on which car you are following, and which battle is in view on camera, you can show the delta for the car in front or the car behind the followed car. This meant I needed to split the Compare Control button into two (i've added that as the first screen shot below.)

How this works is that if you are following a car and click "Compare Behind ->", the followed driver info appears on the left, and the compared driver info appears on the right, and the delta box shows the data with an interval of +1 (This was the original behaviour, but I fixed the Data Interval offset)

If you click the "<- Compare Ahead" button, the followed driver info appears on the right, and the compared driver info appears on the left.

Examples appear in the other two screen shots.

For additional fun, I found that the best way for me to learn was to reverse engineer the existing theme, which meant I documented all the elements and their values, and then created a second document to track my changes.

I'm going to share those documents here, as well as a link to my work in progress theme which represents my ongoing modification to Nick's original theme.

I wanted to maintain the same structure when adding new elements, but I think in the process, I'm making things too complicated.

I will do a new version with a different approach, but thought it might be interesting to share my work as I go.

Please provide your feedback, and any insights on how you might build it differently.

My Modifications (Google Doc) note: only includes data that I was modifying.

Original Data (Google Doc) note: only includes data that I was modifying.

My theme (rar)

Let me know what you think!

Thanks!

-Jeremy




Tony R.
Reply #69

Jeremy K. wrote:
I believe this is a simple fix that will keep showing intervals after a car has finished. Just replace the first part of the "ConvertToGapOrInterval" function on line 158 with this, which checks for "Finished" in addition:
// show OUT/PIT in a race
        if (r.Session.Type == SessionType.Race)
            {       
            // If we are still racing, then check for OUT or PIT
            if (!r.Finished)
            {
                if (r.Out)
                    return "OUT";
                if (r.Entity?.Car?.Movement?.IsInPits == true)
                    return "PIT";
                }
            }

I can confirm this script modification works! Thanks!

A future modification I will want to look at is to change the text to "Winner" after checkered flag (instead of "Leader") .. but my focus is on other things which i will add to a new post.
Doesn't work for me. Still showing PIT or OUT after the race after exporting the theme again.

Or I did something wrong ?


Nick Thissen Appgineering
Reply #70

I don't see anything wrong. Unless there was a bug and the results were not marked as "finished" (which should happen as soon as they cross the finish line), I don't see how this script can ever return "OUT" or "PIT"... Are you sure the race was finished?

Tony R.
Reply #71

Nick Thissen wrote:
I don't see anything wrong. Unless there was a bug and the results were not marked as "finished" (which should happen as soon as they cross the finish line), I don't see how this script can ever return "OUT" or "PIT"... Are you sure the race was finished?

Yes it's working today, didn't change anything. I waited a bit longer after the finish this time ;)

By the way I created a new widget for the coverage (for track temps, air team, wind speed etc...) but it's showing ton of digits. It's not a big deal but how to remove the decimal point ?


Jeremy K.
Reply #75

@Kevin, maybe @Drew meant the link to the theme at the very beginning of this post? (which is also broken for me). I recently directed someone from an Facebook group to this thread as they were asking about it .. so you may have more people trying to find it soon ...

Ivo C.
Reply #76

Jeremy K. wrote:
@Kevin, maybe @Drew meant the link to the theme at the very beginning of this post? (which is also broken for me). I recently directed someone from an Facebook group to this thread as they were asking about it .. so you may have more people trying to find it soon ...

That was me :D

Kevin Neitola Appgineering
Reply #77
· edited

Sorry, was still early for me and I did not read carefully enough. Anyway, I can provide a new link as a workaround for now since it is not possible for me to edit the first post of this thread: click here

Jeremy K.
Reply #78

Hi all,

I'm making good progress with my custom theme based on the ATVO 2020 Theme (screen shot attached of my modifications to the vertical ticker) and I have an interaction questions as I progress:

  • How do I change the background colour for just the currently followed driver? For example, if my camera is currently following #12 Bert Matthys in the screen shot, i'd like that background in the ticker to be a bit lighter. I'm still using the same background as in the 2020 theme, so that is controlled by W_VTickerTop ->SW_VTicker -> L_Background: Background = Static Background - Brush #66434343

So, if i want to override the background transparency only for the followed driver, is that possible inside a ticker?

.. or does the ticker mean there cannot be an override for a single driver entry? If that's the case, is there another way to build a leader board so this is possible?

Thanks!


Emmanuel S.
Reply #79

I do that just this month ;)

This a script, you use for override color font or backround as you want.

using System; 
using ATVO.ThemesSDK; 
using ATVO.ThemesSDK.Data.Entity; 
using ATVO.ThemeEditor.ThemeModels; 
using ATVO.ThemeEditor.Controls; 
using ATVO.ThemeEditor.Scripting.DotNET;
using ATVO.ThemesSDK.Data.Enums;
using ATVO.ThemesSDK.Data.Results;
using ATVO.ThemesSDK.Data.Session;
using System.Collections.Generic;
using System.Windows.Media;

namespace Scripts
{
	public class SC_followed : IScript
	{
		public object Execute(ThemeContentItem item,object value,string parameter,ISimulation sim)
		{
					if (value == null)
				{
			 
			    return null;
				}	
			// Bind to "entitysessionresult_obj" to get the IEntitySessionResult as the value

		
			IEntitySessionResult result = (IEntitySessionResult) value;
			
							
				var foll = result.Entity.IsFollowedEntity.ToString();
				
					
			if	(foll == "True")
			
				return Color.FromRgb(244,251,14);
				
				else
					return Color.FromRgb(255,255,255);
				}}}

Tell me if it is ok for you ;)

Emmanuel S.
Reply #80

@staff impossible to edit

Return white if not follow and yellow if follow (easy to change value RGB)

Emmanuel S.
Reply #81

For color in hex system, search on forum how to use it. It is a little bit different than rgb.

Jeremy K.
Reply #82

Tell me if it is ok for you ;)

Emmanuel!!!

THANK YOU THANK YOU THANK YOU!

It took me a bit of additional experimenting (which I'll detail in a separate post) .. but this is exactly what I was looking for!

Once I got your script working, I just needed to adjust the colours to fit my theme.

The first screen shot is your exact script, the second screenshot is with the tweaks to the RGB values ..
(I would still like to use HEX instead so that I can also control transparency .. but this is amazing .. thanks again!)



Jeremy K.
Reply #83

As a follow-up to Emmanuel's super helpful script that lets you change the color for the followed car:

I'm not very comfortable with scripting yet, so I needed to reverse engineer a few things that I wasn't familiar with. I'll detail everything I did with his script. This might be obvious to most of you, but maybe it will help someone in the same situation as me:

  • Open your theme in the theme editor
    (Note: my customizations are based on Nick's 2020 ATVO theme .. so many widgets are similar)

  • Click the Add Script button

  • Name the Script SC_followed
    (Note, this is assuming you are using Emmanuel's script. I learned that the script name needed to match the "public class" as defined in the class)

  • Select the language C#

  • Select the Generic converter script Template

  • Replace the entire contents of the script with the contents from Emmanuel's script above in this thread.

  • Save your theme and make sure the script compiles
    (Note: I originally got errors because I was using a different name for the script than the public class

  • Go to the widget or object that has the background colour you want to change and select it in the Theme Explorer

  • Open the Overrides section

  • Open the Override Background sub-folder

  • Open the Data Converter sub-folder

  • In the Script drop-down, select the SC_followed.cs script

  • In the DataBinding drop-down, select entitysessionresult_obj
    (Note: this is declared in the Script Comments, but I didn't understand what this meant right away :)

  • Save and Export your theme

  • Load the Theme in ATVO

BOOM!

Huge thanks to Emmanuel for getting me sorted on this .. it's a really helpful feature when switching driver context.

-Jeremy

Emmanuel S.
Reply #84

Happy to help you.

The name of the script just have to be the same as one of the first line:

public class SC_followed : IScript
Jeremy K.
Reply #86

@Rasmus, Kevin posted a new link a few posts above .. i just verified that is still working.
Best

Kevin Neitola Appgineering
Reply #87

FYI: I fixed the download link in the initial post of this thread.

Jaedon W.
Reply #88

Hello. I've since installed the atvo graphic and upon startup it gives me a prompt where the interval is which says: ATVO.Data.Results.EntitySessionResults, Any idea of how to fix. Sorry if this issue has been resolved already didn't really read through the entire forum post

Bailey D.
Reply #89

Hi Nick,

I am looking for some assistance regarding how you've done the vertical ticker.

You've got it currently so only 1 SW is required though it display's how many cars on track. Could you please point me in the right direction on how to get it to work? Thanks


Archive · Read-only

New replies have moved to Discord.