Skip to content

AngelScript bindings mega-issue #2029

Description

@pivotman319-owo

This is a mega-issue covering various requests for implementing AS binding for pre-existing cpp classes. These will live here.

Client Side

  • Potentially expose pano to AS? Would help for interfacing with UI and game

MaterialSystem

  • IMatRenderContext

Server Side

CBaseEntity

  • Core
    • SetName() Right now the name can be changed, but it has to be done with CBaseEntity::KeyValue("targetname", name)
  • Effect Flags (EF_)
    • Enum for EF_ bitflags EF_ITEM_BLINK and EF_PARENT_ANIMATES are not exposed. Latter might not be needed. Also currently the dump is saying that EF_MAX_BITS is earlier in the Enum than where it is in 2013SDK. Unsure if this means that it was defined with a lower value incorrectly or the dumper is weird.
  • Entity and Behavior Flags (EFL_, FL_)
  • Thinking
    • float GetNextThink( int nContextIndex )
    • void SetLastThink( int nContextIndex, float thinkTime )
    • int GetNextThinkTick( int nContextIndex )

CBaseAnimating

  • Fire
    • IgniteNumHitboxFires()
    • IgniteHitboxFireScale()

CBasePlayer

  • [ ]

Triggers

  • CTriggerOnce
  • CTriggerMultiple

Additional entity classes

  • Props
    • CPhysicsProp
    • CDynamicProp
    • CPropScalable

Global Functions

  • SendToConsole (or equivalents)

Gameplay

AI

  • Need CBaseCombatCharacter, CAI_BaseNPC and CNPC_PlayerCompanion properly exposed to get a basic NPC going
    • Potentially re-add NextBot support to game build and expose to AS?
  • NPC animations, attacks, capabilities, tasks, schedules, classifications (e.g.: CLASS_PLAYER_ALLY_VITAL, CLASS_COMBINE), relationships, line-of-sight/Potentially Visible Set
    • Weapon interactions are being tracked as part of weapons binding requests below (acttables, attacks, et al.)

Player

  • Expose CBasePlayer, CPortal_Player
    • Movement
    • Weapon handling
    • Health, armor and ammo
      • Difficulty-based damage scaling and ammo scarcity
    • Interactions (+USE, grab/pickup controllers (CGrabController⁩⁩, CPlayerPickupController⁩⁩)
    • Player bots (IBotController)
    • Button/keypress states, input types defined in in_buttons.h
      • void ForceButtons( int nButtons ) Sort of works, does register, but actions based on those buttons dont occur

Weapons

Misc

  • Vehicles + passenger behaviors (CAI_PassengerBehavior + possibly genericize and refactor alyx/zombie behaviors?)
  • ToBasePlayer(arg1) (used to get a pointer to the owner player class or invoking command client, see entity_tools_server.cpp and the various weapon obj files in sdk2013) - bedrock requirement for weapons!!

Portal-specific

Portals

  • CPropPortal (prop_portal)
    • ... ?
  • CWeaponPortalgun (weapon_portalgun)
  • CLinkedPortalDoor (prop_linked_portal_door; statically-placed world portals)
  • Fizzlers (CTriggerPortalCleanser)
  • Portal bumpers and detectors (CFuncPortalDetector, CFuncPortalBumper)

Testing elements

These will not be directly exposed. Instead an ECS type system is planned for these to add behaviors to them instead.

  • Buttons (CPropButton, CPropUnderButton, CPropFloorButton)
  • Weighted cubes (CPropWeightedCube, CPropMonsterBox)
    • ... ?
  • Indicator panels (CPropIndicatorPanel)
  • Turrets
    • Aperture Sentry Turret (CNPC_Portal_FloorTurret)
      • Requires CBaseTurret (base HL2 turret class; dependency of CNPC_Portal_FloorTurret)
      • Requires CNPC_FloorTurret (dependency of CNPC_Portal_FloorTurret)
    • Rocket turrets (CNPC_RocketTurret, CPropRocketTripwire)
  • Paint
    • CPaintSprayer
    • CPaintStream
    • CPropPaintBomb
      - [ ] CTEWallPaintedEvent Will not implement
    • CTriggerPaintCleanser
    • CWeaponPaintGun
    • Blobulator behaviors
    • Ability to add custom paint definitions
  • Hard Light Bridges
    • CBaseProjector
    • CPropWallProjector
  • Excursion Funnels/Tractor Beams
    • CPropTractorBeamProjector
    • CProjectedTractorBeamEntity
    • CTrigger_TractorBeam
  • Aerial Faith Plates + Hidden Catapult Triggers (CTriggerCatapult)
    • Per TF2 SDK (server, shared):
      • Vector CalculateLaunchVector( CBaseEntity *pVictim, CBaseEntity *pTarget )
      • Vector CalculateLaunchVectorPreserve( Vector vecInitialVelocity, CBaseEntity *pVictim, CBaseEntity *pTarget, bool bForcePlayer )
      • void LaunchByTarget( CBaseEntity *pVictim, CBaseEntity *pTarget )
      • void LaunchByDirection( CBaseEntity *pVictim )
      • void PlayerPassesTriggerFiltersThink()
      • Player/physics velocity, catapult targets, air control
  • Test chamber signs (CPropTestChamberSign)
  • Thermal Discouragement Beams
    • CPortalLaser
      • ... ?
    • Laser Catcher
      • ... ?
    • Portions of CPropWeightedCube (reflection cube + schrodinger)
  • Wheatley bombs
    • CPropGlassFutbol
    • CPropExplodingFutbol
    • CPropFutbolSocket
    • CPropFutbolSpawner

Engine

Tools

Hammer

  • None yet so far

Misc

  • Could potentially bring in AS support for faceposer and hlmv?
  • Would also help to have custom AS-based engine tools...

Mathlib

  • Add QAngle::GetForward(), QAngle::GetUp(), QAngle::GetRight() to match Quaternions
  • DEG2RAD, PI, and other various math macros

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: EnhancementImproving an existing featureWhat: ScriptingIssues relating to VScript or AngelScript.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions