/*
** Command & Conquer Generals Zero Hour(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
// FILE: Smudge.h /////////////////////////////////////////////////////////
#pragma once
#ifndef _SMUDGE_H_
#define _SMUDGE_H_
#include "WW3D2/dllist.h"
#include "WWMATH/Vector2.h"
#include "WWMATH/Vector3.h"
#define SET_SMUDGE_PARAMETERS(smudge,pos,offset,size,opacity) (smudge->m_pos=pos;smudge->m_offset=offset;smudge->m_size=size;smudge->m_opacity=opacity;)
struct Smudge : public DLNodeClass
{
W3DMPO_GLUE(Smudge)
Vector3 m_pos; //position of smudge center
Vector2 m_offset; // difference in position between "texture" extraction and re-insertion for center vertex
Real m_size; //size of smudge in world space.
Real m_opacity; //alpha of center vertex, corners are assumed at 0
struct smudgeVertex
{ Vector3 pos; //world-space position of vertex
Vector2 uv; //uv coordinates of vertex
};
smudgeVertex m_verts[5]; //5 vertices of this smudge (in counter-clockwise order, starting at top-left, ending in center.)
};
struct SmudgeSet : public DLNodeClass
{
W3DMPO_GLUE(SmudgeSet)
public:
friend class SmudgeManager;
SmudgeSet( void );
virtual ~SmudgeSet();
void reset(void);
Smudge *addSmudgeToSet(void);
void removeSmudgeFromSet ( Smudge &mySmudge);
DLListClass &getUsedSmudgeList( void ) { return m_usedSmudgeList;}
Int getUsedSmudgeCount(void) { return m_usedSmudgeCount; } /// m_usedSmudgeList; /// m_freeSmudgeList; /// m_usedSmudgeSetList; /// m_freeSmudgeSetList; ///