From 2344619743ce5d08f187b92f977bdbd75748b634 Mon Sep 17 00:00:00 2001 From: breki Date: Tue, 8 Sep 2026 10:33:45 +0000 Subject: [PATCH 1/6] Expose function to apply faction materials to child turrets --- .../Eve/SpaceObject/Children/EveChildMesh.cpp | 4 + .../Eve/SpaceObject/Children/EveChildMesh.h | 1 + trinity/Eve/SpaceObjectFactory/EveSOF.cpp | 124 +++++++++++------- trinity/Eve/SpaceObjectFactory/EveSOF.h | 3 + .../Eve/SpaceObjectFactory/EveSOF_Blue.cpp | 7 + 5 files changed, 95 insertions(+), 44 deletions(-) diff --git a/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp b/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp index a8d8aa20f..f84201058 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp @@ -965,6 +965,10 @@ void EveChildMesh::GetPickingBatches( ITriRenderBatchAccumulator* batches, Tr2Pi } } } +Tr2MeshBase* EveChildMesh::GetMesh() const +{ + return m_mesh; +} void EveChildMesh::UpdatePerObjectBuffer( Tr2RenderContextEnum::ShaderType shaderType, uint32_t size, void* data ) { diff --git a/trinity/Eve/SpaceObject/Children/EveChildMesh.h b/trinity/Eve/SpaceObject/Children/EveChildMesh.h index 023985f6f..3491be679 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildMesh.h +++ b/trinity/Eve/SpaceObject/Children/EveChildMesh.h @@ -162,6 +162,7 @@ BLUE_CLASS( EveChildMesh ) : void GetPickingBatches( ITriRenderBatchAccumulator * batches, Tr2PickTypes pickTypes, const Tr2PerObjectData* perObjectData ) override; // access + Tr2MeshBase* GetMesh() const; void SetMesh( Tr2MeshBase * mesh ); void SetOrigin( Origin origin ); void SetReflectionMode( EntityComponents::ReflectionMode reflectionMode ); diff --git a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp index 8502a7362..659856817 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp @@ -56,6 +56,7 @@ #include "BlueObjectMetadata.h" #include "ITr2TextureProvider.h" #include "TriSettingsRegistrar.h" +#include "Eve/SpaceObject/Children/EveChildTurret.h" #include @@ -4180,72 +4181,107 @@ void EveSOF::CreatePlacement( // -------------------------------------------------------------------------------- // Description: -// setup the material of a turret with the data from faction +// override the parameters of a turret shader with the data from SOF faction, reading the faction's turret area // -------------------------------------------------------------------------------- -void EveSOF::SetupTurretMaterialFromFaction( EveTurretSet* turretSet, const char* factionName ) +void EveSOF::ApplyFactionToTurretShader( Tr2Effect* shader, const EveSOFDataMgr::GenericData* genericData, const EveSOFDataMgr::FactionData* factionData ) const { - // get generic data - const EveSOFDataMgr::GenericData* genericData = m_dataMgr.GetGenericData(); - // get faction data - const EveSOFDataMgr::FactionData* factionData = m_dataMgr.GetFactionData( factionName ); - if( factionData == nullptr ) + if( !shader ) { return; } // get area data const EveSOFDataMgr::AreaMaterialData* areaMaterialData = &factionData->areaMaterials; - // start modifying the parameters of the turret's shader - Tr2Effect* shader = turretSet->GetShader(); - if( shader ) + // try override shader's parameter, const's first + if( !shader->m_constParameters.empty() ) { - // try override shader's parameter, const's first - if( !shader->m_constParameters.empty() ) + shader->StartUpdate(); + for( auto it = shader->m_constParameters.begin(); it != shader->m_constParameters.end(); ++it ) { - shader->StartUpdate(); - for( auto it = shader->m_constParameters.begin(); it != shader->m_constParameters.end(); ++it ) + // build the parameter + EveSOFUtilsParameterName param( genericData->materialPrefixes, it->name.c_str() ); + if( param.IsMaterialIdxValid() ) { - // build the parameter - EveSOFUtilsParameterName param( genericData->materialPrefixes, it->name.c_str() ); - if( param.IsMaterialIdxValid() ) - { - param.ChangeMaterialIdx( genericData, factionData->materialUsageList[param.GetMaterialIdx()] ); - } - // find data - const Vector4* res = EveSOFUtils::SearchForParameterData( &m_dataMgr, factionData->colorData.colors, areaMaterialData, EveSOFDataArea::TYPE_PRIMARY, ¶m ); - if( res ) - { - it->value = *res; - } + param.ChangeMaterialIdx( genericData, factionData->materialUsageList[param.GetMaterialIdx()] ); + } + // find data + const Vector4* res = EveSOFUtils::SearchForParameterData( &m_dataMgr, factionData->colorData.colors, areaMaterialData, genericData->turretAreaType, ¶m ); + if( res ) + { + it->value = *res; } - shader->EndUpdate(); } - else + shader->EndUpdate(); + } + else + { + // then non-const parameters + for( auto it = shader->m_parameters.begin(); it != shader->m_parameters.end(); ++it ) { - // then non-const parameters - for( auto it = shader->m_parameters.begin(); it != shader->m_parameters.end(); ++it ) + // build the parameter + EveSOFUtilsParameterName param( genericData->materialPrefixes, ( *it )->GetParameterName() ); + if( param.IsMaterialIdxValid() ) { - // build the parameter - EveSOFUtilsParameterName param( genericData->materialPrefixes, ( *it )->GetParameterName() ); - if( param.IsMaterialIdxValid() ) - { - param.ChangeMaterialIdx( genericData, factionData->materialUsageList[param.GetMaterialIdx()] ); - } - // find data - const Vector4* res = EveSOFUtils::SearchForParameterData( &m_dataMgr, factionData->colorData.colors, areaMaterialData, EveSOFDataArea::TYPE_PRIMARY, ¶m ); - if( res ) + param.ChangeMaterialIdx( genericData, factionData->materialUsageList[param.GetMaterialIdx()] ); + } + // find data + const Vector4* res = EveSOFUtils::SearchForParameterData( &m_dataMgr, factionData->colorData.colors, areaMaterialData, genericData->turretAreaType, ¶m ); + if( res ) + { + Tr2Vector4ParameterPtr p; + if( ( *it )->QueryInterface( BlueInterfaceIID(), (void**)&p, BEQI_SILENT ) ) { - Tr2Vector4ParameterPtr p; - if( ( *it )->QueryInterface( BlueInterfaceIID(), (void**)&p, BEQI_SILENT ) ) - { - p->SetValue( *res ); - } + p->SetValue( *res ); } } } } } +// -------------------------------------------------------------------------------- +// Description: +// setup the material of a turret with the data from faction +// -------------------------------------------------------------------------------- +void EveSOF::SetupTurretMaterialFromFaction( EveTurretSet* turretSet, const char* factionName ) +{ + // get faction data + const EveSOFDataMgr::FactionData* factionData = m_dataMgr.GetFactionData( factionName ); + if( factionData == nullptr ) + { + return; + } + ApplyFactionToTurretShader( turretSet->GetShader(), m_dataMgr.GetGenericData(), factionData ); +} + +void EveSOF::SetupChildTurretMaterialFromFaction( EveChildTurret* childTurret, const char* factionName ) +{ + // get faction data + const EveSOFDataMgr::FactionData* factionData = m_dataMgr.GetFactionData( factionName ); + if( !childTurret || !factionData ) + { + return; + } + Tr2MeshBase* mesh = childTurret->GetMesh(); + if( !mesh ) + { + return; + } + + const Tr2MeshAreaVector* areas = mesh->GetAreas( TRIBATCHTYPE_OPAQUE ); + if( !areas ) + { + return; + } + const EveSOFDataMgr::GenericData* genericData = m_dataMgr.GetGenericData(); + for( const Tr2MeshAreaPtr& area : *areas ) + { + if( area ) + { + ApplyFactionToTurretShader( area->GetMaterialInterface(), genericData, factionData ); + } + } +} + // -------------------------------------------------------------------------------- // Description: // setup the material of a turret with the data from SOF faction diff --git a/trinity/Eve/SpaceObjectFactory/EveSOF.h b/trinity/Eve/SpaceObjectFactory/EveSOF.h index 59a276da8..d1f5c8b46 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOF.h +++ b/trinity/Eve/SpaceObjectFactory/EveSOF.h @@ -19,6 +19,7 @@ BLUE_DECLARE( EveSOFDNA ); BLUE_DECLARE( Tr2InstancedMesh ); BLUE_DECLARE( Tr2MeshArea ); BLUE_DECLARE( EveChildContainer ); +BLUE_DECLARE( EveChildTurret ); BLUE_DECLARE_INTERFACE( IEveEffectChildrenOwner ); BLUE_DECLARE_INTERFACE( ITr2LightOwner ); BLUE_DECLARE_INTERFACE( IEveSpaceObjectAttachment ); @@ -60,6 +61,7 @@ class EveSOF : public IRoot // change the material of a turret with SOF data void SetupTurretMaterialFromDNA( EveTurretSet* turretSet, const char* dnaString ); void SetupTurretMaterialFromFaction( EveTurretSet* turretSet, const char* factionName ); + void SetupChildTurretMaterialFromFaction( EveChildTurret* childTurret, const char* factionName ); bool LoadData( const char* filePath ); @@ -117,6 +119,7 @@ class EveSOF : public IRoot void SetupImpactEffects( EveSpaceObject2Ptr obj, const EveSOFDNAPtr dna, ArmorDamageEffectCache& armorDamageEffectCache ) const; void SetupLights( ITr2LightOwnerPtr obj, const EveSOFDNAPtr dna, const std::vector& offsets ) const; void SetupLayout( EveSpaceObject2Ptr obj, EveChildContainerPtr layoutContainer, EveChildInstancedMeshesPtr& sharedMeshes, ArmorDamageEffectCache& armorDamageEffectCache, const EveSOFDNAPtr dna, const std::vector& offsets, int& partTag, bool perPlacementTags, uint32_t seedOverwrite = 0 ); + void ApplyFactionToTurretShader( Tr2Effect* shader, const EveSOFDataMgr::GenericData* genericData, const EveSOFDataMgr::FactionData* factionData ) const; Tr2MeshPtr CreateMesh( const EveSOFDNAPtr dna ) const; diff --git a/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp b/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp index ca0387049..b7b486f84 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOF_Blue.cpp @@ -3,6 +3,7 @@ #include "StdAfx.h" #include "EveSOF.h" +#include "Eve/SpaceObject/Children/EveChildTurret.h" #include "Eve/Turret/EveTurretSet.h" BLUE_DEFINE( EveSOF ); @@ -46,6 +47,12 @@ const Be::ClassInfo* EveSOF::ExposeToBlue() "Change the material of the turret according to the faction in SOF\n" ":param turretSet: turret set that will be modified\n" ":param faction: faction name" ) + MAP_METHOD_AND_WRAP( + "SetupChildTurretMaterialFromFaction", + SetupChildTurretMaterialFromFaction, + "Change the material of every opaque area of a child turret according to the faction in SOF\n" + ":param childTurret: child turret whose mesh materials will be modified\n" + ":param faction: faction name" ) EXPOSURE_END() From d61bf8f0a97a1d834c4b58e370e31c0a7758484b Mon Sep 17 00:00:00 2001 From: breki Date: Tue, 8 Sep 2026 10:58:06 +0000 Subject: [PATCH 2/6] Intentionally clearing the turret target resets the target to none correctly instead of just early return --- trinity/Eve/SpaceObject/Children/EveChildTurret.cpp | 1 + trinity/Eve/Turret/EveTurretTarget.cpp | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp index e1643358c..08f20b3d4 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp @@ -822,6 +822,7 @@ void EveChildTurret::SetTargetObject( IRoot* target ) { if( !target ) { + m_target->SetTargetable( nullptr ); return; } ITriTargetablePtr oldTargetPtr = m_target->GetTargetable(); diff --git a/trinity/Eve/Turret/EveTurretTarget.cpp b/trinity/Eve/Turret/EveTurretTarget.cpp index 23ad70d8f..da726f99d 100644 --- a/trinity/Eve/Turret/EveTurretTarget.cpp +++ b/trinity/Eve/Turret/EveTurretTarget.cpp @@ -54,11 +54,17 @@ ITriTargetablePtr EveTurretTarget::GetTargetable() const // -------------------------------------------------------------------------------- // Description: -// Set the target object. Since this most liekly has changed, trigger +// Set the target object. Since this most likely has changed, trigger // the targetposition smoothing (interpolating) // -------------------------------------------------------------------------------- bool EveTurretTarget::SetTargetable( IRoot* object ) { + if( !object ) + { + m_object = nullptr; + m_objectPos = nullptr; + return true; + } // set new target object ITriTargetablePtr newTarget; if( !object->QueryInterface( BlueInterfaceIID(), (void**)&newTarget ) ) From b73dc5b6a8d2cb3d00e1fe188d290fd122802a9a Mon Sep 17 00:00:00 2001 From: breki Date: Tue, 8 Sep 2026 11:02:08 +0000 Subject: [PATCH 3/6] got to state idle if turret target is cleared --- trinity/Eve/SpaceObject/Children/EveChildTurret.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp index 08f20b3d4..530e5291c 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp @@ -822,6 +822,10 @@ void EveChildTurret::SetTargetObject( IRoot* target ) { if( !target ) { + if( m_state == STATE_TARGETING || m_state == STATE_FIRING ) + { + EnterStateIdle(); + } m_target->SetTargetable( nullptr ); return; } From b07f70d99648687786a5b4b61ea04c88403ce51e Mon Sep 17 00:00:00 2001 From: breki Date: Tue, 8 Sep 2026 13:16:44 +0000 Subject: [PATCH 4/6] pass through controller function to the firing effect --- .../Eve/SpaceObject/Children/EveChildTurret.cpp | 16 ++++++++++++++++ .../Eve/SpaceObject/Children/EveChildTurret.h | 4 ++++ .../SpaceObject/Children/EveChildTurret_Blue.cpp | 12 ++++++++++++ 3 files changed, 32 insertions(+) diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp index 530e5291c..306269b33 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp @@ -660,6 +660,22 @@ Matrix EveChildTurret::GetFiringBoneWorldTransform( unsigned int muzzle ) const return GetTurretBoneTransform( boneID ); } +void EveChildTurret::SetControllerVariable( const char* name, float value ) +{ + if( m_firingEffect ) + { + m_firingEffect->SetControllerVariable( name, value ); + } +} + +void EveChildTurret::StartControllers() +{ + if( m_firingEffect ) + { + m_firingEffect->StartControllers(); + } +} + void EveChildTurret::InitializeFiringEffect() { m_firingEffectMuzzlePosSet = false; diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.h b/trinity/Eve/SpaceObject/Children/EveChildTurret.h index ce4b3b0f2..2e76a2804 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.h +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.h @@ -56,6 +56,10 @@ BLUE_CLASS( EveChildTurret ) : Matrix GetFiringBoneWorldTransform( unsigned int muzzle ) const; + // controllers: forwarded to the firing effect, the child owns none itself + void SetControllerVariable( const char* name, float value ); + void StartControllers(); + // turret set states enum State { diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp index 5631efb4a..f2611b91c 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp @@ -93,5 +93,17 @@ const Be::ClassInfo* EveChildTurret::ExposeToBlue() "\n:param idx: index of the firing bone in the current model." "\n:returns: The world transform matrix." ) + MAP_METHOD_AND_WRAP( + "SetControllerVariable", + SetControllerVariable, + "Set a controller variable, forwarded to the firing effect's controllers\n" + ":param name: variable name\n" + ":param value: new variable value\n" ) + + MAP_METHOD_AND_WRAP( + "StartControllers", + StartControllers, + "Start the firing effect's controllers" ) + EXPOSURE_CHAINTO( EveChildMesh ) } From 9d2746f626014a1f1e2e8af527c985fdf3608715 Mon Sep 17 00:00:00 2001 From: breki Date: Tue, 8 Sep 2026 13:46:18 +0000 Subject: [PATCH 5/6] re implement miss queue and such for child turret --- .../SpaceObject/Children/EveChildTurret.cpp | 38 +++++++++++++++++++ .../Eve/SpaceObject/Children/EveChildTurret.h | 6 +++ .../Children/EveChildTurret_Blue.cpp | 21 ++++++++++ trinity/Eve/Turret/EveTurretSet.h | 2 - trinity/Eve/Turret/EveTurretTarget.h | 4 ++ 5 files changed, 69 insertions(+), 2 deletions(-) diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp index 306269b33..1d0e46aa9 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp @@ -676,6 +676,44 @@ void EveChildTurret::StartControllers() } } +// -------------------------------------------------------------------------------- +// Description: +// Add a hit/miss to the target's shot queue. godma pushes one entry per damage +// message; StartFireAtLocator pops one per shot. +// -------------------------------------------------------------------------------- +void EveChildTurret::SetShotMissed( const bool missed ) +{ + m_target->SetShotMissed( missed ); +} + +// -------------------------------------------------------------------------------- +// Description: +// Return the time of the last queued shot. +// -------------------------------------------------------------------------------- +double EveChildTurret::GetLastShotTime() const +{ + return m_target->GetLastShotTime(); +} + +// -------------------------------------------------------------------------------- +// Description: +// Maximum firing time offset between turrets. Same constant as EveTurretSet so +// godma can compare the two. +// -------------------------------------------------------------------------------- +float EveChildTurret::GetShotTimeVariance() const +{ + return EVE_TURRET_RANDOM_DELAY_MAX; +} + +// -------------------------------------------------------------------------------- +// Description: +// Return the size of the target's hit/miss queue. +// -------------------------------------------------------------------------------- +size_t EveChildTurret::MissQueueSize() const +{ + return m_target->MissQueueSize(); +} + void EveChildTurret::InitializeFiringEffect() { m_firingEffectMuzzlePosSet = false; diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.h b/trinity/Eve/SpaceObject/Children/EveChildTurret.h index 2e76a2804..efbe637ad 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.h +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.h @@ -60,6 +60,12 @@ BLUE_CLASS( EveChildTurret ) : void SetControllerVariable( const char* name, float value ); void StartControllers(); + // hit/miss queue: forwarded to the turret target, which pops it on every shot + void SetShotMissed( bool missed ); + double GetLastShotTime() const; + float GetShotTimeVariance() const; + size_t MissQueueSize() const; + // turret set states enum State { diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp index f2611b91c..2e9f958e6 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp @@ -105,5 +105,26 @@ const Be::ClassInfo* EveChildTurret::ExposeToBlue() StartControllers, "Start the firing effect's controllers" ) + MAP_METHOD_AND_WRAP( + "SetShotMissed", + SetShotMissed, + "Queue whether the next turret shot misses.\n" + ":param missed: is the next shot a miss" ) + + MAP_METHOD_AND_WRAP( + "GetLastShotTime", + GetLastShotTime, + "Get the time we last queued a shot in arbitrary units. Only use for comparison between turrets." ) + + MAP_METHOD_AND_WRAP( + "GetShotTimeVariance", + GetShotTimeVariance, + "Get maximum firing time variance between turrets." ) + + MAP_METHOD_AND_WRAP( + "MissQueueSize", + MissQueueSize, + "Get the size of the active miss/hit queue." ) + EXPOSURE_CHAINTO( EveChildMesh ) } diff --git a/trinity/Eve/Turret/EveTurretSet.h b/trinity/Eve/Turret/EveTurretSet.h index 65c9058e2..795c340de 100644 --- a/trinity/Eve/Turret/EveTurretSet.h +++ b/trinity/Eve/Turret/EveTurretSet.h @@ -42,8 +42,6 @@ BLUE_DECLARE( TriObserverLocal ); // constants // maximum number of single turrets per turret set const unsigned int EVE_MAX_TURRETS_PER_SET = 24; -// maximum time offset for turret firing -const float EVE_TURRET_RANDOM_DELAY_MAX = 0.6f; struct EveTurretSetVSData { diff --git a/trinity/Eve/Turret/EveTurretTarget.h b/trinity/Eve/Turret/EveTurretTarget.h index 94dbad2c5..01b5844db 100644 --- a/trinity/Eve/Turret/EveTurretTarget.h +++ b/trinity/Eve/Turret/EveTurretTarget.h @@ -6,6 +6,10 @@ #include "Include/ITriTargetable.h" +// maximum time offset for turret firing; godma reads it back through GetShotTimeVariance +// as the window for grouping shots that belong to one damage message +const float EVE_TURRET_RANDOM_DELAY_MAX = 0.6f; + namespace ImpactBehaviour { From 534822018bc5727a4a6c528cb70b6306e65c0647 Mon Sep 17 00:00:00 2001 From: breki Date: Wed, 9 Sep 2026 15:21:51 +0000 Subject: [PATCH 6/6] dropped missqueue and shot time variance from evechildturret and exposed the eveturrettarget function instead --- .../SpaceObject/Children/EveChildTurret.cpp | 38 ------------------- .../Eve/SpaceObject/Children/EveChildTurret.h | 6 --- .../Children/EveChildTurret_Blue.cpp | 21 ---------- trinity/Eve/Turret/EveTurretTarget.h | 4 ++ trinity/Eve/Turret/EveTurretTarget_Blue.cpp | 21 ++++++++++ 5 files changed, 25 insertions(+), 65 deletions(-) diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp index 1d0e46aa9..306269b33 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.cpp @@ -676,44 +676,6 @@ void EveChildTurret::StartControllers() } } -// -------------------------------------------------------------------------------- -// Description: -// Add a hit/miss to the target's shot queue. godma pushes one entry per damage -// message; StartFireAtLocator pops one per shot. -// -------------------------------------------------------------------------------- -void EveChildTurret::SetShotMissed( const bool missed ) -{ - m_target->SetShotMissed( missed ); -} - -// -------------------------------------------------------------------------------- -// Description: -// Return the time of the last queued shot. -// -------------------------------------------------------------------------------- -double EveChildTurret::GetLastShotTime() const -{ - return m_target->GetLastShotTime(); -} - -// -------------------------------------------------------------------------------- -// Description: -// Maximum firing time offset between turrets. Same constant as EveTurretSet so -// godma can compare the two. -// -------------------------------------------------------------------------------- -float EveChildTurret::GetShotTimeVariance() const -{ - return EVE_TURRET_RANDOM_DELAY_MAX; -} - -// -------------------------------------------------------------------------------- -// Description: -// Return the size of the target's hit/miss queue. -// -------------------------------------------------------------------------------- -size_t EveChildTurret::MissQueueSize() const -{ - return m_target->MissQueueSize(); -} - void EveChildTurret::InitializeFiringEffect() { m_firingEffectMuzzlePosSet = false; diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret.h b/trinity/Eve/SpaceObject/Children/EveChildTurret.h index efbe637ad..2e76a2804 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret.h +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret.h @@ -60,12 +60,6 @@ BLUE_CLASS( EveChildTurret ) : void SetControllerVariable( const char* name, float value ); void StartControllers(); - // hit/miss queue: forwarded to the turret target, which pops it on every shot - void SetShotMissed( bool missed ); - double GetLastShotTime() const; - float GetShotTimeVariance() const; - size_t MissQueueSize() const; - // turret set states enum State { diff --git a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp index 2e9f958e6..f2611b91c 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildTurret_Blue.cpp @@ -105,26 +105,5 @@ const Be::ClassInfo* EveChildTurret::ExposeToBlue() StartControllers, "Start the firing effect's controllers" ) - MAP_METHOD_AND_WRAP( - "SetShotMissed", - SetShotMissed, - "Queue whether the next turret shot misses.\n" - ":param missed: is the next shot a miss" ) - - MAP_METHOD_AND_WRAP( - "GetLastShotTime", - GetLastShotTime, - "Get the time we last queued a shot in arbitrary units. Only use for comparison between turrets." ) - - MAP_METHOD_AND_WRAP( - "GetShotTimeVariance", - GetShotTimeVariance, - "Get maximum firing time variance between turrets." ) - - MAP_METHOD_AND_WRAP( - "MissQueueSize", - MissQueueSize, - "Get the size of the active miss/hit queue." ) - EXPOSURE_CHAINTO( EveChildMesh ) } diff --git a/trinity/Eve/Turret/EveTurretTarget.h b/trinity/Eve/Turret/EveTurretTarget.h index 01b5844db..597aa2b77 100644 --- a/trinity/Eve/Turret/EveTurretTarget.h +++ b/trinity/Eve/Turret/EveTurretTarget.h @@ -59,6 +59,10 @@ BLUE_CLASS( EveTurretTarget ) : double GetLastShotTime() const; bool PopShotMissed(); size_t MissQueueSize() const; + float GetShotTimeVariance() const + { + return EVE_TURRET_RANDOM_DELAY_MAX; + } // target object queries float GetRadius() const; diff --git a/trinity/Eve/Turret/EveTurretTarget_Blue.cpp b/trinity/Eve/Turret/EveTurretTarget_Blue.cpp index 5c39a72c4..1ca28f526 100644 --- a/trinity/Eve/Turret/EveTurretTarget_Blue.cpp +++ b/trinity/Eve/Turret/EveTurretTarget_Blue.cpp @@ -17,5 +17,26 @@ const Be::ClassInfo* EveTurretTarget::ExposeToBlue() MAP_ATTRIBUTE( "positionOldInfluence", m_positionOldInfluence, "Influence of previous tracking position", Be::READ ) MAP_ATTRIBUTE( "behaviour", m_impactBehaviour, "Impact behaviour", Be::READ ) + MAP_METHOD_AND_WRAP( + "SetShotMissed", + SetShotMissed, + "Queue whether the next shot misses. godma pushes one entry per damage message, the turret pops one per shot.\n" + ":param missed: is the next shot a miss" ) + + MAP_METHOD_AND_WRAP( + "GetLastShotTime", + GetLastShotTime, + "Get the time we last queued a shot in arbitrary units. Only use for comparison between turrets." ) + + MAP_METHOD_AND_WRAP( + "GetShotTimeVariance", + GetShotTimeVariance, + "Get maximum firing time variance between turrets." ) + + MAP_METHOD_AND_WRAP( + "MissQueueSize", + MissQueueSize, + "Get the size of the active miss/hit queue." ) + EXPOSURE_END() } \ No newline at end of file