C++ Scripting: Part 26 – Hot Reloading

Tags: ,

Imagine being able to modify C++ game code and have it take effect without even restarting the game. That’s the motivating idea behind today’s article. Read on to see how this works and how to use it to really speed up iteration times.

Read the rest of this article »

No Comments

C++ Scripting: Part 25 – Full Type Hierarchy

Tags: , , ,

So far we’ve had C++ classes that derive from other classes, but not their interfaces. Today we’ll make C++ classes implement all their interfaces to form a full type hierarchy. Along the way we’ll learn about how inheritance works in C++, specifically the esoteric form known as “virtual inheritance.”

Read the rest of this article »

No Comments

2017 in Review

Today we’ll take a little holiday break from the C++ Scripting series to look back at 2017 in Unity programming.

Read the rest of this article »

1 Comment

C++ Scripting: Part 24 – Default Parameters

Tags: , , , , ,

We’ve been able to call methods since the very beginning, but we’ve always had to pass all the parameters. Today we’ll add support for default parameters so you can skip them sometimes. There’s a surprising amount of detail involved with this, so read on to learn some caveats of C#, .NET, and C++.

Read the rest of this article »

No Comments

C++ Scripting: Part 23 – Base Type APIs

Tags: ,

Now that we have complete support overriding everything—methods, properties, indexers, events—that can be overridden in a base class or interface, there’s a bit of tidying up to do. In today’s article, we’ll take steps to make base types much more useful by inserting them into their proper place in the type hierarchy.

Read the rest of this article »

No Comments

C++ Scripting: Part 22 – Full Base Type Support

Tags: , , ,

Today we’ll complete our ability to use C++ classes to derive from C# classes and implement C# interfaces. So far we’ve been able to override methods, properties, and indexers. Today we’ll add the ability to override events and derive from classes that don’t have a default constructor.
Those are the last two pieces of the puzzle that will allow us to derive from any C# base type with a C++ class. Read on for all the details about how this works.

Read the rest of this article »

No Comments

C++ Scripting: Part 21 – Implement C# Properties and Indexers in C++

Tags: , ,

Part 19 of this series started to allow our C++ game code to derive from C# classes and implement C# interfaces. The first step was to override methods as they’re the most common. Today we’ll tackle the second-most common: properties. We’ll also handle indexers, which are like properties with more parameters. Read on to see how to use this and how it works behind the scenes.

Read the rest of this article »

No Comments

C++ Scripting: Part 20 – Performance Improvements

Tags: , , ,

The last time we looked at performance was way back in part four of the series. Ever since then we’ve been relentlessly adding more and more features to the C++ scripting system. So today we’ll take a break from feature additions to improve the system’s performance in a couple of key areas.

Read the rest of this article »

No Comments

C++ Scripting: Part 19 – Implement C# Interfaces with C++ Classes

Tags: , , , ,

Implementing interfaces and deriving from classes is commonplace in many codebases. Today we’ll make it so C++ classes can implement C# interfaces and derive from C# classes. This means our C++ game code will be able to implement custom IComparer classes for sorting a List and derive custom EventArgs for dispatching in events. Read on to see how this is implemented and how to use it in our projects.

Read the rest of this article »

No Comments

C++ Scripting: Part 18 – Array Index Operator

Tags: ,

When we covered arrays in part 14, we skipped implementing the [] operator with them. Instead, we opted for a simpler pair of GetItem and SetItem functions. Today we’ll address that oversight so our C++ game code can index arrays just like in C#.

Read the rest of this article »

No Comments