diff --git a/trinity/Eve/SpaceObject/Children/EveChildContainer_Blue.cpp b/trinity/Eve/SpaceObject/Children/EveChildContainer_Blue.cpp index 42ac5b7c3..838724f56 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildContainer_Blue.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildContainer_Blue.cpp @@ -107,7 +107,7 @@ const Be::ClassInfo* EveChildContainer::ExposeToBlue() StartControllers, "Start all controllers" ) - MAP_PROPERTY_READONLY( "partTag", GetPartTag, "Part tag for multi-part space objects" ) + MAP_PROPERTY_PERSISTED( "partTag", GetPartTag, SetPartTag, "Part tag for multi-part space objects" ) MAP_METHOD_AND_WRAP( "GetParent", GetParent, "Returns the parent space object child in the hierarchy" ) MAP_METHOD_AND_WRAP( "GetOwner", GetOwner, "Returns the owner space object" ) EXPOSURE_END() diff --git a/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp b/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp index a8d8aa20f..c7b627351 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildMesh.cpp @@ -32,6 +32,7 @@ EveChildMesh::EveChildMesh( IRoot* lockobj ) : PARENTLOCK( m_attachments ), PARENTLOCK( m_lights ), PARENTLOCK( m_overlayEffects ), + PARENTLOCK( m_ownedLocatorSets ), m_display( true ), m_inheritOverlayEffects( true ), m_isVisible( false ), @@ -2078,7 +2079,11 @@ void EveChildMesh::CollectOwnedGeometry( TriBatchType type, const Matrix& parent void EveChildMesh::SetOwnedLocatorSets( const std::vector& sets ) { - m_ownedLocatorSets = sets; + m_ownedLocatorSets.Clear(); + for( const auto& entry : sets ) + { + m_ownedLocatorSets.Append( entry ); + } InvalidateOwnerMergedLocators( LocatorInvalidationReason::StructureChanged ); } diff --git a/trinity/Eve/SpaceObject/Children/EveChildMesh.h b/trinity/Eve/SpaceObject/Children/EveChildMesh.h index 023985f6f..331d2effe 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildMesh.h +++ b/trinity/Eve/SpaceObject/Children/EveChildMesh.h @@ -324,7 +324,7 @@ BLUE_CLASS( EveChildMesh ) : void ReleaseBvhVisualization(); TriGeometryResPtr m_bvhVisualizationGeometry; - std::vector m_ownedLocatorSets; + PEveLocatorSetsVector m_ownedLocatorSets; // armor/hull damage owned by this part, renders whether or not it is attached to a ship EveDamageOverlayPtr m_damageOverlay; diff --git a/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp b/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp index 3b3980a30..bb770f74c 100644 --- a/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp +++ b/trinity/Eve/SpaceObject/Children/EveChildMesh_Blue.cpp @@ -28,6 +28,8 @@ const Be::ClassInfo* EveChildMesh::ExposeToBlue() MAP_ATTRIBUTE( "inheritOverlayEffects", m_inheritOverlayEffects, "If true, the parent space object's overlay effects (e.g. cloak) also render over this child mesh.", Be::READWRITE | Be::PERSIST ) MAP_ATTRIBUTE( "overlayEffects", m_overlayEffects, "Overlay effects owned by this child mesh. Rendered over the child's mesh areas, underneath any inherited parent overlay effects.", Be::READ | Be::PERSIST ) MAP_ATTRIBUTE( "damageOverlay", m_damageOverlay, "Armor/hull damage owned by this part. Renders whether or not the part is attached to a ship.", Be::READWRITE | Be::PERSIST ) + MAP_ATTRIBUTE( "ownedLocatorSets", m_ownedLocatorSets, "Locator sets owned by this part, in part-local space. Merged into the owning space object's locator view.", Be::PERSISTONLY ) + MAP_ATTRIBUTE( "armorDamageShader", m_armorDamageShader, "Armor damage shader for this part, pushed to the part's damage overlay when it is created.", Be::READWRITE | Be::PERSIST ) MAP_ATTRIBUTE( "castShadow", m_castShadow, "", Be::READWRITE | Be::PERSIST | Be::NOTIFY ) MAP_ATTRIBUTE( "updateAnimation", m_updateAnimation, "Should the object update its animation updater every frame", Be::READWRITE | Be::PERSIST ) MAP_ATTRIBUTE( "mesh", m_mesh, "", Be::READWRITE | Be::PERSIST | Be::NOTIFY ) @@ -93,7 +95,7 @@ const Be::ClassInfo* EveChildMesh::ExposeToBlue() "GetMorphTargetWeight( name )\n\n" "Returns the weight of the morph target. Returns 0 if no morph target with that name was found.\n" ":param name: morph target name\n" ) - MAP_PROPERTY_READONLY( "partTag", GetPartTag, "Part tag for multi-part space objects" ) + MAP_PROPERTY_PERSISTED( "partTag", GetPartTag, SetPartTag, "Part tag for multi-part space objects" ) MAP_METHOD_AND_WRAP( "GetParent", GetParent, "Returns the parent space object child in the hierarchy" ) MAP_METHOD_AND_WRAP( "GetOwner", GetOwner, "Returns the owner space object" ) EXPOSURE_END() diff --git a/trinity/Eve/SpaceObject/EveSpaceObject2.cpp b/trinity/Eve/SpaceObject/EveSpaceObject2.cpp index f31588f6d..865a43591 100644 --- a/trinity/Eve/SpaceObject/EveSpaceObject2.cpp +++ b/trinity/Eve/SpaceObject/EveSpaceObject2.cpp @@ -3534,8 +3534,8 @@ EveDamageOverlayPtr EveSpaceObject2::EnsureChildDamageOverlay( const LocatorSour BeClasses->CopyTo( flickerCurve->GetRootObject(), (IRoot**)&flickerCopy ); overlay->SetHullDamageFlickerCurve( flickerCopy ); } - overlay->SetSeed( m_impactOverlay->GetSeed() + range.owner->GetPartTag() ); } + overlay->SetSeed( m_impactOverlay->GetSeed() + range.owner->GetPartTag() ); overlay->SetDamageLocatorCount( uint32_t( range.count ) ); int rangeStart = min( int32_t( m_damageLocatorEnabled.size() ), range.start ); int rangeEnd = min( int32_t( m_damageLocatorEnabled.size() ), range.start + range.count ); diff --git a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp index dd57f96c3..8502a7362 100644 --- a/trinity/Eve/SpaceObjectFactory/EveSOF.cpp +++ b/trinity/Eve/SpaceObjectFactory/EveSOF.cpp @@ -286,7 +286,6 @@ IRootPtr EveSOF::BuildFromDNA( const char* dnaString ) if( layoutContainer->m_objects.size() != 0 ) { newObj->AddToEffectChildrenList( layoutContainer ); - newObj->RunDamageLocatorFilter(); } // EveShip2-specific setups