From ed33c70a23e6dbcf08c0e2bb1c2a4ecd757b0dac Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 5 Apr 2022 18:54:09 -0500 Subject: [PATCH 1/2] display the item to be spawned given a valid datablock name, use that meshes shape to display the spawnsphere mesh, rather than the default one --- Engine/source/T3D/missionMarker.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Engine/source/T3D/missionMarker.cpp b/Engine/source/T3D/missionMarker.cpp index 005ec3491..27785d627 100644 --- a/Engine/source/T3D/missionMarker.cpp +++ b/Engine/source/T3D/missionMarker.cpp @@ -433,7 +433,23 @@ void SpawnSphere::unpackUpdate(NetConnection * con, BitStream * stream) mSpawnTransform = stream->readFlag(); stream->read(&mSpawnClass); + + String oldSDB = mSpawnDataBlock; stream->read(&mSpawnDataBlock); + if (oldSDB != mSpawnDataBlock) + { + ShapeBaseData *spawnedDatablock = dynamic_cast(Sim::findObject(mSpawnDataBlock.c_str())); + if (spawnedDatablock) + { + delete mShapeInstance; + mShapeInstance = new TSShapeInstance(spawnedDatablock->mShape); + } + else + { + delete mShapeInstance; + mShapeInstance = new TSShapeInstance(mDataBlock->mShape); + } + } stream->read(&mSpawnName); stream->read(&mSpawnProperties); stream->read(&mSpawnScript); From e1a127715e7b32c639066d714e8930bfadab68ec Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 5 Apr 2022 20:17:51 -0500 Subject: [PATCH 2/2] sanity checks --- Engine/source/T3D/missionMarker.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Engine/source/T3D/missionMarker.cpp b/Engine/source/T3D/missionMarker.cpp index 27785d627..1bd19ae68 100644 --- a/Engine/source/T3D/missionMarker.cpp +++ b/Engine/source/T3D/missionMarker.cpp @@ -438,16 +438,16 @@ void SpawnSphere::unpackUpdate(NetConnection * con, BitStream * stream) stream->read(&mSpawnDataBlock); if (oldSDB != mSpawnDataBlock) { + delete mShapeInstance; ShapeBaseData *spawnedDatablock = dynamic_cast(Sim::findObject(mSpawnDataBlock.c_str())); - if (spawnedDatablock) + if (spawnedDatablock && spawnedDatablock->mShape) { - delete mShapeInstance; - mShapeInstance = new TSShapeInstance(spawnedDatablock->mShape); + mShapeInstance = new TSShapeInstance(spawnedDatablock->mShape); } - else + else if (mDataBlock) { - delete mShapeInstance; - mShapeInstance = new TSShapeInstance(mDataBlock->mShape); + if (mDataBlock->mShape) + mShapeInstance = new TSShapeInstance(mDataBlock->mShape); } } stream->read(&mSpawnName);