Revision Difference
Coding-Cheat-Sheet#546860
<cat>Code.Intro</cat>
<title>Cheat-Sheet</title>
A lot of things are common between game engines. Here's how to do a bunch of common stuff.
## Console Printing
```
Log.Info( "It worked!" );
Log.Warning( $"{playername} is an idiot!" );
Log.Error( "Error!" );
```
## Debug Drawing
```
// draw text at position for 10 seconds
DebugOverlay.Text( position, "Some Text!", Color.Yellow, 10.0f );
// draw a line
DebugOverlay.Line( startPos, endPos );
// draw text on screen
DebugOverlay.ScreenText( "Hello, debug text!\nSupports multiple lines" );
```
## Spawning an Entity
```
ModelEntity model = new ModelEntity( "models/citizen/citizen.vmdl" );
model.Position = new Vector3( 0, 0, 100 );
```
## Get Entity's Eye Position and Direction
```
Vector3 eyePos = Entity.EyePos;
Vector3 eyeDir = Entity.EyeRot.Forward;
```
## Do a ray trace
```
// trace 2000 units in eye direction, ignore entity
TraceResult tr = Trace.Ray( eyePos, eyePos + eyeDir * 2000 )
.Ignore( Entity )
.Run();
// If we hit, draw a 2 inch sphere for 10 seconds
if ( tr.Hit )
{
DebugOverlay.Sphere( tr.EndPos, 2.0f, Color.Red, duration: 10.0f );
}
```
## Create a Server Console Command
```
[ServerCmd( "my_command" )]
[ConCmd.Server( "my_command" )]
public static void MyConsoleCommand()
{
// the client that is calling the console command
var callingClient = ConsoleSystem.Caller;
}
```
## Create a Client Console Command
```
[ClientCmd( "my_command" )]
[ConCmd.Client( "my_command" )]
public static void MyConsoleCommand()
{
}
```
## Console Command Arguments
```
// my_command Poop 7 false
[ClientCmd( "my_command" )]
[ConCmd.Client( "my_command" )]
public static void MyConsoleCommand( string one, int two, bool three )
{
}
```
## Calling a Console Command
```
MyConsoleCommand( "poop", 7, false );
```