Interface IMyProjectiles
Interface for controlling projectile behavior (mods interface)
Namespace: Sandbox.ModAPI
Assembly: Sandbox.Common.dll
Syntax
public interface IMyProjectiles
Methods
Add(MyDefinitionBase, MyDefinitionBase, Vector3D, Vector3, Vector3, MyEntity, MyEntity, MyEntity, MyEntity[], Boolean, UInt64)
Adds new projectile
Declaration
void Add(MyDefinitionBase weaponDefinition, MyDefinitionBase ammoDefinition, Vector3D origin, Vector3 initialVelocity, Vector3 directionNormalized, MyEntity owningEntity, MyEntity owningEntityAbsolute, MyEntity weapon, MyEntity[] ignoredEntities, bool supressHitIndicator = false, ulong owningPlayer = 0UL)
Parameters
Type | Name | Description |
---|---|---|
MyDefinitionBase | weaponDefinition | Definition of weapon. Should be MyWeaponDefinition |
MyDefinitionBase | ammoDefinition | Definition of ammo. Should be MyAmmoDefinition |
Vector3D | origin | Spawn position |
Vector3 | initialVelocity | Speed of object that fired projectile |
Vector3 | directionNormalized | Direction of bullet |
MyEntity | owningEntity | Rifle, block, ... |
MyEntity | owningEntityAbsolute | Character, main ship cockpit. Used only to record damage statistics in single player |
MyEntity | weapon | Shooter entity (rifle, block) |
MyEntity[] | ignoredEntities | |
System.Boolean | supressHitIndicator | When true, hit indicator won't show |
System.UInt64 | owningPlayer | Player that owns this projectile. Adds hit indication for that player on hit, and using that id in safezone access checks |
add_OnProjectileAdded(OnProjectileAddedRemoved)
Declaration
void add_OnProjectileAdded(OnProjectileAddedRemoved value)
Parameters
Type | Name | Description |
---|---|---|
OnProjectileAddedRemoved | value |
add_OnProjectileRemoving(OnProjectileAddedRemoved)
Declaration
void add_OnProjectileRemoving(OnProjectileAddedRemoved value)
Parameters
Type | Name | Description |
---|---|---|
OnProjectileAddedRemoved | value |
AddHitDetector(IMyProjectileDetector)
Adds projectile detector. It allows to detect projectiles flying though it, and can cause them hit it Example: Safezone, ship shields
Declaration
void AddHitDetector(IMyProjectileDetector detector)
Parameters
Type | Name | Description |
---|---|---|
IMyProjectileDetector | detector | Detector logic |
AddOnHitInterceptor(Int32, HitInterceptor)
Call function when projectile hits something
Declaration
void AddOnHitInterceptor(int priority, HitInterceptor interceptor)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | priority | Calls are ordered by priority. Functions with lower priority are called earlier |
HitInterceptor | interceptor | Function that should be called on projectile hit |
GetAllProjectileCount()
Gets amount of projectiles currently existing
Declaration
int GetAllProjectileCount()
Returns
Type | Description |
---|---|
System.Int32 |
GetProjectile(Int32)
Gets projectile info
Declaration
MyProjectileInfo GetProjectile(int index)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | index of the info |
Returns
Type | Description |
---|---|
MyProjectileInfo |
GetSurfaceAndMaterial(IMyEntity, ref LineD, ref Vector3D, UInt32, out MySurfaceImpactEnum, out MyStringHash)
Gets information about material and surface, that bullet hitted Arguments should be taken from MyProjectileHitInfo on projectile hit (subscribe on event with AddOnHitInterceptor(Int32, HitInterceptor)).
Declaration
void GetSurfaceAndMaterial(IMyEntity entity, ref LineD line, ref Vector3D hitPosition, uint shapeKey, out MySurfaceImpactEnum surfaceImpact, out MyStringHash materialType)
Parameters
Type | Name | Description |
---|---|---|
IMyEntity | entity | Entity that was hitted |
LineD | line | Part of bullet trajectory |
Vector3D | hitPosition | World position of hit |
System.UInt32 | shapeKey | Should be taken from HitShapeKey |
MySurfaceImpactEnum | surfaceImpact | Returns surface, that bullet hitted |
MyStringHash | materialType | Returns material, that bullet hitted |
MarkProjectileForDestroy(Int32)
Marks projectiles for destroy, doesn't decrease projectiles count. Shifting projectiles id, on next frame
Declaration
void MarkProjectileForDestroy(int index)
Parameters
Type | Name | Description |
---|---|---|
System.Int32 | index | index of projectile |
remove_OnProjectileAdded(OnProjectileAddedRemoved)
Declaration
void remove_OnProjectileAdded(OnProjectileAddedRemoved value)
Parameters
Type | Name | Description |
---|---|---|
OnProjectileAddedRemoved | value |
remove_OnProjectileRemoving(OnProjectileAddedRemoved)
Declaration
void remove_OnProjectileRemoving(OnProjectileAddedRemoved value)
Parameters
Type | Name | Description |
---|---|---|
OnProjectileAddedRemoved | value |
RemoveHitDetector(IMyProjectileDetector)
Removes projectile detector
Declaration
void RemoveHitDetector(IMyProjectileDetector detector)
Parameters
Type | Name | Description |
---|---|---|
IMyProjectileDetector | detector | Detector logic |
RemoveOnHitInterceptor(HitInterceptor)
Removed function from call when projectile hits something
Declaration
void RemoveOnHitInterceptor(HitInterceptor interceptor)
Parameters
Type | Name | Description |
---|---|---|
HitInterceptor | interceptor | Function that should not be called on projectile hit |
Events
OnProjectileAdded
Called when new projectile was added
Declaration
event OnProjectileAddedRemoved OnProjectileAdded
Event Type
Type | Description |
---|---|
OnProjectileAddedRemoved |
OnProjectileRemoving
Called when projectile was removed
Declaration
event OnProjectileAddedRemoved OnProjectileRemoving
Event Type
Type | Description |
---|---|
OnProjectileAddedRemoved |