99 lines
3.4 KiB
Ucode
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)
|
|
}
|