Skip to content

Conversation

@Jagerente
Copy link
Contributor

List of important changes for CL devs to do; we'll have to pass it on the upcoming release:

  1. Change Rigidbody usage from MapObject.GetComponent("Rigidbody") to MapObject.Rigidbody.
  2. If you have used Rigidbody.AddForceOptimized or Rigidbody.AddTorqueOptimized => Change usage to Rigidbody.AddForce and Rigidbody.AddTorque. (I have migrated all builtins that was in the main, Hex might be the only one who have anything incoming related to this)
  3. For Rigidbody.AddTorque & Rigidbody.AddForce change force mode argument from raw string/int to ForceModeEnum.*
  4. For Character.AddForce change force mode argument from raw string/int to ForceModeEnum.*.
  5. Go through all Builtin/Enums. If there's anything that you could probably use to pass as an argument / comparsion / field setting - do that so we can safely change enum type in the future and cl devs won't have to migrate their code.
  6. VisualElement changes you have to do using Enums: (this is for Hex only, since it wasn't released yet)
  • FlexDirection
  • AlignItems
  • JustifyContent
  • AlignSelf
  • TextAlign
  • TextOverflow
  • OverflowX
  • OverflowY
  • TransformRotate
  • FontStyle
  1. Character.AddOutline use Enum outline mode; on the next update after release it will be broken.
  2. Human.SetWeapon use Enum for weapon; on the next update after release it will be broken.
  3. Game.SpawnEffect & Game.SpawnUnscaledEffect - use Enums for the effectName & tsKillSound; on the next update after release it will be broken.

Copy link
Collaborator

@AutumnThyme AutumnThyme left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Resolve questions/proposal before I can close

@Jagerente
Copy link
Contributor Author

Jagerente commented Jan 6, 2026

Complete migration guide for other CL developers:

# CL Enum Migration Guide

## Character

### Methods

- `AddOutline(color, mode)`: Replace `mode` string literal `"OutlineAll"` with `OutlineModeEnum.OutlineAll` (or other values: `OutlineVisible`, `OutlineHidden`, `OutlineAndSilhouette`, `SilhouetteOnly`, `OutlineAndLightenColor`)

- `PlayAnimation(animation, fade)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values (e.g., `"Armature|run"` -> `HumanAnimationEnum.Run`)

- `PlayAnimationAt(animation, t, fade, force)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationSpeed(animation)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `SetAnimationSpeed(animation, speed, synced)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `IsPlayingAnimation(animation)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationNormalizedTime(animation)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `ForceAnimation(animation, fade)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationLength(animation)`: Replace `animation` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `AddForce(force, mode)`: Replace `mode` numeric value with `ForceModeEnum` values (`ForceModeEnum.Acceleration`, `ForceModeEnum.Force`, `ForceModeEnum.Impulse`, `ForceModeEnum.VelocityChange`)

### Properties

- `Team`: When setting, use `TeamEnum` values instead of string literals

## Human

### Methods

- `SetWeapon(weapon)`: Replace `weapon` string literals like `"Blade"`, `"AHSS"`, `"APG"`, `"Thunderspear"` with `WeaponEnum.Blade`, `WeaponEnum.AHSS`, `WeaponEnum.APG`, `WeaponEnum.Thunderspear`. Note: `"Blades"` and `"Thunderspears"` (plural) are deprecated and should be replaced with singular forms.

- `SetSpecial(special)`: Replace `special` string literals with `SpecialEnum` values (e.g., `"Potato"` -> `SpecialEnum.Potato`, `"Escape"` -> `SpecialEnum.Escape`, etc.)

- `SetParticleEffect(effectName, enabled)`: Replace `effectName` string literals with `HumanParticleEffectEnum` values (`HumanParticleEffectEnum.Buff1`, `HumanParticleEffectEnum.Buff2`, `HumanParticleEffectEnum.Fire1`)

### Properties

- `Weapon`: When setting, use `WeaponEnum` values instead of string literals

- `CurrentSpecial`: When setting, use `SpecialEnum` values instead of string literals

## Game

### Methods

- `SetCameraMode(mode)`: Replace `mode` string literals `"TPS"`, `"Original"`, `"FPS"` with `CameraModeEnum.TPS`, `CameraModeEnum.Original`, `CameraModeEnum.FPS`

- `SpawnTitan(type)`: Replace `type` string literals with `TitanTypeEnum` values (e.g., `"Normal"` -> `TitanTypeEnum.Normal`, `"Abnormal"` -> `TitanTypeEnum.Abnormal`, etc.)

- `SpawnTitanAt(type, position, rotationY)`: Replace `type` string with `TitanTypeEnum` values

- `SpawnTitans(type, count)`: Replace `type` string with `TitanTypeEnum` values

- `SpawnTitansAsync(type, count)`: Replace `type` string with `TitanTypeEnum` values

- `SpawnTitansAt(type, count, position, rotationY)`: Replace `type` string with `TitanTypeEnum` values

- `SpawnTitansAtAsync(type, count, position, rotationY)`: Replace `type` string with `TitanTypeEnum` values

- `SpawnShifter(type)`: Replace `type` string literals with `ShifterTypeEnum` values (`ShifterTypeEnum.Annie`, `ShifterTypeEnum.Eren`, `ShifterTypeEnum.Armored`, `ShifterTypeEnum.WallColossal`)

- `SpawnShifterAt(type, position, rotationY)`: Replace `type` string with `ShifterTypeEnum` values

- `SpawnProjectile(projectileName, position, rotation, velocity, gravity, liveTime, team, extraParam, extraParam2)`: Replace `projectileName` string with `ProjectileNameEnum` values (`ProjectileNameEnum.Thunderspear`, `ProjectileNameEnum.CannonBall`, `ProjectileNameEnum.Flare`, `ProjectileNameEnum.BladeThrow`, `ProjectileNameEnum.SmokeBomb`, `ProjectileNameEnum.Rock1`). Replace `team` string with `TeamEnum` values (`TeamEnum.None`, `TeamEnum.Blue`, `TeamEnum.Red`, `TeamEnum.Titan`, `TeamEnum.Human`)

- `SpawnProjectileWithOwner(projectileName, position, rotation, velocity, gravity, liveTime, owner, extraParam, extraParam2)`: Replace `projectileName` string with `ProjectileNameEnum` values

- `SpawnEffect(effectName, position, rotation, scale, tsExplodeColor, tsKillSound)`: Replace `effectName` string with `EffectNameEnum` values (e.g., `"ThunderspearExplode"` -> `EffectNameEnum.ThunderspearExplode`, `"GasBurst"` -> `EffectNameEnum.GasBurst`, etc.). Replace `tsKillSound` string with `TSKillSoundEnum` values (`TSKillSoundEnum.Kill`, `TSKillSoundEnum.Air`, `TSKillSoundEnum.Ground`, `TSKillSoundEnum.ArmorHit`, `TSKillSoundEnum.CloseShot`, `TSKillSoundEnum.MaxRangeShot`)

- `SpawnUnscaledEffect(effectName, position, rotation, tsExplodeColor, tsKillSound)`: Replace `effectName` string with `EffectNameEnum` values. Replace `tsKillSound` string with `TSKillSoundEnum` values

### Properties

- `ForcedLoadout`: When setting, use `LoadoutEnum` values instead of string literals

- `ForcedCharacterType`: When setting, use `CharacterTypeEnum` values instead of string literals

## MapObject

### Methods

- `AddSphereCollider(collideMode, collideWith, center, radius)`: Replace `collideMode` string with `CollideModeEnum` values (`CollideModeEnum.Region`, `CollideModeEnum.Physical`, `CollideModeEnum.None`). Replace `collideWith` string with `CollideWithEnum` values (`CollideWithEnum.All`, `CollideWithEnum.MapObjects`, `CollideWithEnum.Characters`, `CollideWithEnum.Titans`, `CollideWithEnum.Humans`, `CollideWithEnum.Projectiles`, `CollideWithEnum.Entities`, `CollideWithEnum.Hitboxes`, `CollideWithEnum.MapEditor`)

- `AddBoxCollider(collideMode, collideWith, center, size)`: Replace `collideMode` string with `CollideModeEnum` values. Replace `collideWith` string with `CollideWithEnum` values

- `AddSphereTarget(team, center, radius)`: Replace `team` string with `TeamEnum` values (`TeamEnum.None`, `TeamEnum.Blue`, `TeamEnum.Red`, `TeamEnum.Titan`, `TeamEnum.Human`)

- `AddBoxTarget(team, center, size)`: Replace `team` string with `TeamEnum` values

## Animation (Component)

### Methods

- `IsPlaying(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimation(anim, fade, layer)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimationAt(anim, normalizedTime, fade, layer)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimationQueued(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `StopAnimation(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values (or `null` to stop all)

- `SetAnimationSpeed(name, speed)`: Replace `name` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationSpeed(name)`: Replace `name` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationLength(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationNormalizedTime(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `SetAnimationNormalizedTime(anim, normalizedTime)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `SetAnimationWeight(anim, weight)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationWeight(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

## Animator (Component)

### Methods

- `IsPlaying(anim, layer)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimation(anim, fade, layer)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimationAt(anim, normalizedTime, fade, layer)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationLength(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

## Rigidbody (Component)

### Methods

- `AddForce(force, forceMode, atPoint)`: Replace `forceMode` numeric value with `ForceModeEnum` values (`ForceModeEnum.Force`, `ForceModeEnum.Acceleration`, `ForceModeEnum.Impulse`, `ForceModeEnum.VelocityChange`)

- `AddTorque(torque, forceMode)`: Replace `forceMode` numeric value with `ForceModeEnum` values

### Properties

- `CollisionDetectionMode`: When setting, use `CollisionDetectionModeEnum` values instead of numeric literals

## Collider (Component)

### Methods

- `Raycast(start, end, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

## Transform

### Methods

- `IsPlayingAnimation(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `PlayAnimation(anim, fade)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

- `GetAnimationLength(anim)`: Replace `anim` string with `HumanAnimationEnum`, `TitanAnimationEnum`, `AnnieAnimationEnum`, `ErenAnimationEnum`, `WallColossalAnimationEnum`, `DummyAnimationEnum`, or `HorseAnimationEnum` values

## VisualElement

### Methods

- `FlexDirection(value)`: Replace `value` numeric literal with `FlexDirectionEnum` values (`FlexDirectionEnum.Row`, `FlexDirectionEnum.Column`, `FlexDirectionEnum.RowReverse`, `FlexDirectionEnum.ColumnReverse`)

- `AlignItems(value)`: Replace `value` numeric literal with `AlignEnum` values (`AlignEnum.Auto`, `AlignEnum.FlexStart`, `AlignEnum.Center`, `AlignEnum.FlexEnd`, `AlignEnum.Stretch`)

- `JustifyContent(value)`: Replace `value` numeric literal with `JustifyEnum` values (`JustifyEnum.FlexStart`, `JustifyEnum.Center`, `JustifyEnum.FlexEnd`, `JustifyEnum.SpaceBetween`, `JustifyEnum.SpaceAround`, `JustifyEnum.SpaceEvenly`)

- `AlignSelf(value)`: Replace `value` numeric literal with `AlignEnum` values

- `FontStyle(value)`: Replace `value` numeric literal with `FontStyleEnum` values (`FontStyleEnum.Normal`, `FontStyleEnum.Bold`, `FontStyleEnum.Italic`, `FontStyleEnum.BoldAndItalic`)

- `TextAlign(value)`: Replace `value` numeric literal with `TextAlignEnum` values (`TextAlignEnum.UpperLeft`, `TextAlignEnum.UpperCenter`, `TextAlignEnum.UpperRight`, `TextAlignEnum.MiddleLeft`, `TextAlignEnum.MiddleCenter`, `TextAlignEnum.MiddleRight`, `TextAlignEnum.LowerLeft`, `TextAlignEnum.LowerCenter`, `TextAlignEnum.LowerRight`)

- `TextOverflow(value)`: Replace `value` numeric literal with `TextOverflowEnum` values (`TextOverflowEnum.Clip`, `TextOverflowEnum.Ellipsis`)

- `OverflowX(value)`: Replace `value` numeric literal with `OverflowEnum` values (`OverflowEnum.Visible`, `OverflowEnum.Hidden`)

- `OverflowY(value)`: Replace `value` numeric literal with `OverflowEnum` values

- `TransformRotate(angle, angleUnit)`: Replace `angleUnit` numeric literal with `AngleUnitEnum` values (`AngleUnitEnum.Degree`, `AngleUnitEnum.Gradian`, `AngleUnitEnum.Radian`, `AngleUnitEnum.Turn`)

## ScrollView

### Methods

- `Elasticity(value)`: Replace `value` numeric literal with `ScrollElasticityEnum` values (`ScrollElasticityEnum.Clamped`, `ScrollElasticityEnum.Elastic`, `ScrollElasticityEnum.Unrestricted`)

## Physics

### Methods

- `Linecast(start, end, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

- `LinecastAll(start, end, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

- `Spherecast(start, end, radius, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

- `SpherecastAll(start, end, radius, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

- `Boxcast(start, end, dimensions, orientation, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

- `BoxcastAll(start, end, dimensions, orientation, collideWith)`: Replace `collideWith` string with `CollideWithEnum` values

## Input

### Methods

- `SetCategoryKeysEnabled(category, enabled)`: Replace `category` string with `InputCategoryEnum` values (`InputCategoryEnum.General`, `InputCategoryEnum.Human`, `InputCategoryEnum.Titan`, `InputCategoryEnum.Interaction`)

## Locale

### Methods

- `Set(language, key, value)`: Replace `language` string with `LanguageEnum` values (e.g., `"English"` -> `LanguageEnum.English`, `"Russian"` -> `LanguageEnum.Russian`, etc.)

- `RegisterLanguage(language, strings)`: Replace `language` string with `LanguageEnum` values

- `RegisterFallback(fromLanguage, toLanguage)`: Replace `fromLanguage` and `toLanguage` strings with `LanguageEnum` values

- `RemoveFallback(fromLanguage)`: Replace `fromLanguage` string with `LanguageEnum` values

### Properties

- `DefaultLanguage`: When setting, use `LanguageEnum` values instead of string literals

## Player

### Properties

- `Loadout`: When setting, use `LoadoutEnum` values instead of string literals

- `Team`: When reading, returns `TeamEnum` values

- `Status`: When reading, returns `PlayerStatusEnum` values

- `CharacterType`: When reading, returns `CharacterTypeEnum` values

## PhysicsMaterial (Component)

### Properties

- `FrictionCombine`: When setting, use `PhysicMaterialCombineEnum` values instead of numeric literals

- `BounceCombine`: When setting, use `PhysicMaterialCombineEnum` values instead of numeric literals

## Icon

### Properties

- `ScaleMode`: When setting, use `ScaleModeEnum` values instead of numeric literals

## Slider

### Properties

- `Direction`: When setting, use `SliderDirectionEnum` values instead of numeric literals

## LineRenderer

### Properties

- `Alignment`: When setting, use `LineAlignmentEnum` values instead of numeric literals

- `TextureMode`: When setting, use `LineTextureModeEnum` values instead of numeric literals

- `ShadowCastingMode`: When setting, use `ShadowCastingModeEnum` values instead of numeric literals

- `ColorGradientMode`: When setting, use `GradientModeEnum` values instead of numeric literals

## WallColossal

### Properties

- `LeftHandState`: When reading, returns `HandStateEnum` values

- `RightHandState`: When reading, returns `HandStateEnum` values

- `SteamState`: When reading, returns `SteamStateEnum` values

@Jagerente
Copy link
Contributor Author

tbd:

  • IconEnum
  • PlayerStateEnum
  • UILabelTypeEnum
  • SoundEnums
  • KeyBindsEnum

@Jagerente Jagerente marked this pull request as draft January 8, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants