1
0
KF2-Dev-Scripts/Engine/Classes/ApexComponentBase.uc
2020-12-13 18:01:13 +03:00

99 lines
3.4 KiB
Ucode

/*=============================================================================
ApexComponentBase.uc: PhysX APEX integration. Component Base
Copyright 2008-2009 NVIDIA Corporation.
=============================================================================*/
class ApexComponentBase extends MeshComponent
native(Mesh)
hidecategories(Object)
editinlinenew;
/** This component's index buffer. */
var protected{protected} const native transient pointer ComponentBaseResources{class FApexBaseResources};
/** A fence used to track when the rendering thread has released the component's resources. */
var protected{protected} native const transient RenderCommandFence_Mirror ReleaseResourcesFence{FRenderCommandFence};
var() const ApexAsset Asset;
var() Color WireframeColor;
var const bool bAssetChanged;
cpptext
{
public:
virtual physx::apex::NxApexRenderable *GetApexRenderable(void) const { return 0; }
// NVCHANGE_BEGIN: JCAO - Using the render proxy to render the destructible
// TODO: DestructiblePreview add the render proxy, then GetApexRenderableRT could be removed
virtual physx::apex::NxApexRenderable *GetApexRenderableRT(void) const { return 0; }
virtual physx::apex::NxDestructibleRenderable *GetDestructibleRenderableRT(void) const { return 0; }
// NVCHANGE_END: JCAO - Using the render proxy to render the destructible
protected:
virtual void UpdateApexEditorState(UProperty* PropertyThatChanged = NULL) {}
private:
friend class UApexAsset;
// Called when the Asset gets rebuilt (in editor only).
virtual void OnApexAssetLost(void) { }
virtual void OnApexAssetReset(void) { }
public:
//UObject
//UActorComponent
virtual UBOOL IsValidComponent() const { return UMeshComponent::IsValidComponent(); }
// UMeshComponent interface.
virtual INT GetNumElements(void) const;
virtual UMaterialInterface *GetMaterial(INT MaterialIndex) const;
//UPrimitiveComponent
virtual void UpdateTransform();
virtual void UpdateBounds();
virtual void InitComponentRBPhys(UBOOL bFixed);
virtual void TermComponentRBPhys(FRBPhysScene *InScene);
/**
* Called after all objects referenced by this object have been serialized. Order of PostLoad routed to
* multiple objects loaded in one set is not deterministic though ConditionalPostLoad can be forced to
* ensure an object has been "PostLoad"ed.
*/
virtual void PostLoad();
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent);
void PostEditMove(UBOOL bFinished);
/**
* Check for asynchronous resource cleanup completion
* @return TRUE if the rendering resources have been released
*/
virtual UBOOL IsReadyForFinishDestroy();
protected:
/** Attaches the component to the scene, and initializes the component's resources if they have not been yet. */
virtual void Attach();
/**
* Detach the component from the scene and remove its render proxy
* @param bWillReattach TRUE if the detachment will be followed by an attachment
*/
virtual void Detach(UBOOL bWillReattach = FALSE);
friend class FApexBaseSceneProxy;
}
defaultproperties
{
// Various physics related items need to be ticked pre physics update
TickGroup=TG_PreAsyncWork
CollideActors=True
BlockActors=True
BlockZeroExtent=True
BlockNonZeroExtent=True
BlockRigidBody=True
WireframeColor=(R=255,G=128,B=64,A=255)
}