decal atlas support work

allow a textureCoordCount to be used raw when texrows and coumns are not >1 in order to let the transmitted vector actually be used

correct and augment editDecalDetails to now read
      DecalEditorGui.editDecalDetails( %this.instanceId, %pos, %tan, %size, %uvID  );
it needed the word split to begin with, and also added the uvID for instance frame tracking/overriding
same token added a  getDecalFrame(%this.instanceId); method

todos: add a frame lookup and selector for the instance tab, modify decal display to account for non-square uv portions
This commit is contained in:
AzaezelX 2025-09-19 09:09:55 -05:00
parent 12db0500e8
commit 82435693dd
4 changed files with 30 additions and 12 deletions

View file

@ -406,12 +406,15 @@ void DecalData::reloadRects()
bool canRenderColsByFrame = false;
S32 id = 0;
texRect[id].point.x = 0.f;
texRect[id].extent.x = 1.f;
texRect[id].point.y = 0.f;
texRect[id].extent.y = 1.f;
texCoordCount = (texRows * texCols) - 1;
if (texRows > 1 || texCols > 1)
{
texCoordCount = (texRows * texCols) - 1;
texRect[id].point.x = 0.f;
texRect[id].extent.x = 1.f;
texRect[id].point.y = 0.f;
texRect[id].extent.y = 1.f;
}
if( texCoordCount > 16 )
{

View file

@ -854,7 +854,7 @@ DefineEngineMethod( GuiDecalEditorCtrl, selectDecal, void, ( U32 id ), , "select
object->selectDecal( decalInstance );
}
DefineEngineMethod( GuiDecalEditorCtrl, editDecalDetails, void, ( U32 id, Point3F pos, Point3F tan,F32 size ), , "editDecalDetails( S32 )()" )
DefineEngineMethod( GuiDecalEditorCtrl, editDecalDetails, void, ( U32 id, Point3F pos, Point3F tan, F32 size, S32 uvID), , "editDecalDetails( S32,Point3F,Point3F,F32,S32 )()" )
{
DecalInstance *decalInstance = gDecalManager->mDecalInstanceVec[id];
if( decalInstance == NULL )
@ -864,7 +864,8 @@ DefineEngineMethod( GuiDecalEditorCtrl, editDecalDetails, void, ( U32 id, Point3
decalInstance->mPosition = pos;
decalInstance->mTangent = tan;
decalInstance->mSize = size;
decalInstance->mTextureRectIdx = uvID;
if ( decalInstance == object->mSELDecal )
object->setGizmoFocus( decalInstance );
@ -873,6 +874,11 @@ DefineEngineMethod( GuiDecalEditorCtrl, editDecalDetails, void, ( U32 id, Point3
gDecalManager->notifyDecalModified( decalInstance );
}
DefineEngineMethod(GuiDecalEditorCtrl, getDecalFrame, S32, (U32 id), , "")
{
return gDecalManager->mDecalInstanceVec[id]->mTextureRectIdx;
}
DefineEngineMethod( GuiDecalEditorCtrl, getSelectionCount, S32, (), , "" )
{
if ( object->mSELDecal != NULL )