Helper functions which let you construct internal data types.

Create a new object of the type given by `typeName`

. This type should be an internal game type.

obj = NewObject("gameObject")puppet = NewObject("PlayerPuppet")vec2 = NewObject("Vector2")vec3 = NewObject("Vector3")matrix = NewObject("Matrix")world_transform = NewObject("WorldTransform")

The geometric types discussed below can also be created with NewObject.

Create a new `Vector3`

from a table of `x`

, `y`

, and `z`

floats.

position = ToVector3{x=-1788, y=-450, z=7.75}

Property | Description |

| The x-axis component of the vector |

| The y-axis component of the vector |

| The z-axis component of the vector |

In Cyberpunk, the Z axis is the up axis.

Create a new `Vector4`

from a table of `x`

, `y`

, `z`

, and `w`

floats.

position = ToVector4{x=-1788, y=-450, z=7.75, w=1}

Property | Description |

| The x-axis component of the vector |

| The y-axis component of the vector |

| The z-axis component of the vector |

| The w-axis component of the vector |

You may notice that functions like `PlayerPuppet:GetWorldPosition`

will return a `Vector4`

, even though, intuitively, 3D coordinates only include x, y, and z values. These `Vector4`

values are known as homogenous coordinates in graphical programming, useful in matrix transformations.

All you really need to know is that the 4th value, `w`

, should always be 1 when you are dealing with 3D coordinates.

Create a new `EulerAngles`

from a table of `roll`

, `pitch`

, and `yaw`

. Angle values are in degrees.

rotation = ToEulerAngles{roll=0, pitch=0, yaw=45}player = Game.GetPlayer()Game.GetTeleportationFacility():Teleport(player, player:GetWorldPosition(), rotation)

Property | Description |

| The horizontal angle in degrees along the axis pointing up. 0 is north, 90 is west, 180 and -180 are south, and -90 is east. |

| The vertical angle in degrees along the axis pointing to the right. -90 is down, 0 is straight ahead, and 90 is up. |

| The roll angle in degrees along the axis pointing forward. Positive values rotate anti-clockwise and negative values rotate clockwise. |

Create a new `Quaternion`

from a table of a vector part `i`

, `j`

, `k`

, and a scalar (real) part `r`

.

-- 45 degree rotation about the Z axis (yaw)rotation = ToQuaternion{i=0, j=0, k=0.383, r=0.924}

Property | Description |

| The x-axis component of the quaternion |

| The y-axis component of the quaternion |

| The z-axis component of the quaternion |

| The scalar (real) part of the quaternion |

Quaternions are also often expressed with `w, x, y, z`

terms, which map to our terms as following:

```
w == r
x == i
y == j
z == k
```

Create a new `CName`

from a table of `hash_hi`

and `hash_lo`

.

cname = ToCName{hash_hi=0x01234567, hash_lo=0x89abcdef}

Property | Description |

| The higher 32 bits of the |

| The lower 32 bits of the |

| The text value of the |

Create a new `TweakDBID`

from a table of `hash`

and `length`

.

id = ToTweakDB{hash=0x01234567, length=12}

Property | Description |

| The CRC32 hash of the item name |

| The length of the item name |

Create an `ItemID`

from a table of `id`

, `rng_seed`

, an unknown field `unknown`

, and an unknown field `maybe_type`

.

dbid = ToTweakDB{hash=0x01234567, length=12}itemid = ToItemID{id=dbid, rng_seed=0x01234567}

Property | Description |

| The TweakDBID referenced by this ItemID |

| Alias for |

| The RNG (random number generation) seed used for loot generation |

| Unknown field |

| Unknown field, possibly a type |