Parcourir la source

crashfix work for hot-editing shape assets tied to tsstatics

AzaezelX il y a 1 an
Parent
commit
3ace31c68c

+ 1 - 1
Engine/source/T3D/assets/ImageAsset.h

@@ -151,7 +151,7 @@ public:
    static U32 getAssetById(StringTableEntry assetId, AssetPtr<ImageAsset>* imageAsset);
    static U32 getAssetById(String assetId, AssetPtr<ImageAsset>* imageAsset) { return getAssetById(assetId.c_str(), imageAsset); };
 
-   U32 load();
+   U32 load() override;
 
 protected:
    void            initializeAsset(void) override;

+ 1 - 1
Engine/source/T3D/assets/LevelAsset.h

@@ -111,7 +111,7 @@ public:
    void                    setBakedSceneFile(const char* pBakedSceneFile);
    inline StringTableEntry getBakedSceneFile(void) const { return mBakedSceneFile; };
 
-   SimObjectId load();
+   U32 load() override { return Ok; };
 
 protected:
    static bool setLevelFile(void *obj, const char *index, const char *data) { static_cast<LevelAsset*>(obj)->setLevelFile(data); return false; }

+ 1 - 1
Engine/source/T3D/assets/MaterialAsset.h

@@ -104,7 +104,7 @@ public:
    static void initPersistFields();
    void copyTo(SimObject* object) override;
 
-   U32 load();
+   U32 load() override;
 
    StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; }
    SimObjectPtr<Material> getMaterialDefinition() { return mMaterialDefinition; }

+ 3 - 2
Engine/source/T3D/assets/ShapeAsset.cpp

@@ -304,8 +304,6 @@ void ShapeAsset::_onResourceChanged(const Torque::Path &path)
       return;
 
    refreshAsset();
-
-   onAssetRefresh();
 }
 
 U32 ShapeAsset::load()
@@ -534,6 +532,9 @@ void ShapeAsset::onAssetRefresh(void)
    // Update.
    if(!Platform::isFullPath(mFileName))
       mFilePath = getOwned() ? expandAssetFilePath(mFileName) : mFilePath;
+
+   load();
+   //onAssetRefresh();
 }
 
 void ShapeAsset::SplitSequencePathAndName(String& srcPath, String& srcName)

+ 1 - 1
Engine/source/T3D/assets/ShapeAsset.h

@@ -132,7 +132,7 @@ public:
    /// Declare Console Object.
    DECLARE_CONOBJECT(ShapeAsset);
 
-   U32 load();
+   U32 load() override;
 
    TSShape* getShape() { return mShape; }
 

+ 1 - 1
Engine/source/T3D/assets/SoundAsset.h

@@ -156,7 +156,7 @@ public:
    DECLARE_CONOBJECT(SoundAsset);
 
    static bool _setSoundFile(void* object, const char* index, const char* data);
-   U32 load();
+   U32 load() override;
    inline StringTableEntry getSoundPath(const U32 slotId = 0) const { return mSoundPath[slotId]; };
    SFXProfile* getSfxProfile(const U32 slotId = 0) { return &mSFXProfile[slotId]; }
    SFXPlayList* getSfxPlaylist() { return &mPlaylist; }

+ 1 - 1
Engine/source/T3D/assets/TerrainAsset.h

@@ -82,7 +82,7 @@ public:
 
    inline Resource<TerrainFile> getTerrainResource(void) const { return mTerrainFile; };
 
-   U32 load();
+   U32 load() override;
 
    static bool getAssetByFilename(StringTableEntry fileName, AssetPtr<TerrainAsset>* shapeAsset);
    static StringTableEntry getAssetIdByFilename(StringTableEntry fileName);

+ 1 - 1
Engine/source/T3D/assets/TerrainMaterialAsset.h

@@ -89,7 +89,7 @@ public:
    static void initPersistFields();
    void copyTo(SimObject* object) override;
 
-   U32 load();
+   U32 load() override;
 
    StringTableEntry getMaterialDefinitionName() { return mMatDefinitionName; }
    SimObjectPtr<TerrainMaterial> getMaterialDefinition() { return mMaterialDefinition; }

+ 4 - 1
Engine/source/T3D/tsStatic.cpp

@@ -389,7 +389,7 @@ bool TSStatic::_createShape()
    SAFE_DELETE(mPhysicsRep);
    SAFE_DELETE(mShapeInstance);
    mAmbientThread = NULL;
-   mShape = NULL;
+   //mShape = NULL;
 
    U32 assetStatus = ShapeAsset::getAssetErrCode(mShapeAsset);
    if (assetStatus == AssetBase::Ok || assetStatus == AssetBase::UsingFallback)
@@ -619,6 +619,9 @@ void TSStatic::onShapeChanged()
 {
    _createShape();
    _updateShouldTick();
+
+   if (isServerObject())
+      setMaskBits(AdvancedStaticOptionsMask);
 }
 
 void TSStatic::setSkinName(const char* name)

+ 1 - 1
Engine/source/assets/assetBase.h

@@ -91,7 +91,7 @@ public:
       return mErrCodeStrings[errCode];
    };
    U32 getStatus() { return mLoadedState; };
-   U32 load() { return NotLoaded; };
+   virtual U32 load() { return NotLoaded; };
    AssetBase();
    virtual ~AssetBase();