mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-21 21:24:46 +00:00
virtuals removed and replaced with override where necessary on the rest of the code base, clang-tidy to the rescue.
175 lines
5.2 KiB
C++
175 lines
5.2 KiB
C++
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
|
|
// Copyright (C) 2015 Faust Logic, Inc.
|
|
//
|
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
// of this software and associated documentation files (the "Software"), to
|
|
// deal in the Software without restriction, including without limitation the
|
|
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
// sell copies of the Software, and to permit persons to whom the Software is
|
|
// furnished to do so, subject to the following conditions:
|
|
//
|
|
// The above copyright notice and this permission notice shall be included in
|
|
// all copies or substantial portions of the Software.
|
|
//
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
// IN THE SOFTWARE.
|
|
//
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
|
#ifndef _AFX_XFM_MOD_BASE_H_
|
|
#define _AFX_XFM_MOD_BASE_H_
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
|
#include "math/mPoint3.h"
|
|
#include "math/mMatrix.h"
|
|
#include "math/mMathFn.h"
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
// BASE CLASSES
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
|
class BitStream;
|
|
class afxEffectWrapper;
|
|
|
|
class afxXM_Defs
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
POSITION = BIT(0),
|
|
ORIENTATION = BIT(1),
|
|
POSITION2 = BIT(2),
|
|
SCALE = BIT(3),
|
|
COLOR = BIT(4),
|
|
VISIBILITY = BIT(5),
|
|
ALL_BUT_SCALE = (POSITION | ORIENTATION | POSITION2),
|
|
ALL = (ALL_BUT_SCALE | SCALE),
|
|
};
|
|
};
|
|
|
|
struct afxXM_Params : public afxXM_Defs
|
|
{
|
|
Point3F pos;
|
|
MatrixF ori;
|
|
Point3F scale;
|
|
Point3F pos2;
|
|
LinearColorF color;
|
|
F32 vis;
|
|
|
|
enum { BAD_OFFSET = S32_MAX };
|
|
|
|
static U32 getParameterOffset(U32 param, S32 component=-1);
|
|
afxXM_Params();
|
|
};
|
|
|
|
class afxXM_Base;
|
|
|
|
class afxXM_BaseData : public GameBaseData, public afxXM_Defs
|
|
{
|
|
typedef GameBaseData Parent;
|
|
|
|
public:
|
|
bool ignore_time_factor;
|
|
|
|
public:
|
|
/*C*/ afxXM_BaseData();
|
|
/*C*/ afxXM_BaseData(const afxXM_BaseData&, bool = false);
|
|
|
|
void packData(BitStream* stream) override;
|
|
void unpackData(BitStream* stream) override;
|
|
|
|
static void initPersistFields();
|
|
|
|
virtual afxXM_Base* create(afxEffectWrapper* fx, bool on_server) { return 0; }
|
|
|
|
DECLARE_CONOBJECT(afxXM_BaseData);
|
|
};
|
|
|
|
class afxXM_Base : public afxXM_Defs
|
|
{
|
|
protected:
|
|
afxEffectWrapper* fx_wrapper;
|
|
afxXM_BaseData* datablock;
|
|
F32 time_factor;
|
|
|
|
public:
|
|
/*C*/ afxXM_Base(afxXM_BaseData*, afxEffectWrapper*);
|
|
virtual ~afxXM_Base();
|
|
|
|
virtual void start(F32 timestamp) { }
|
|
virtual void updateParams(F32 dt, F32 elapsed, afxXM_Params& p);
|
|
|
|
// old update form for backwards compatibility (deprecated)
|
|
virtual void update(F32 dt, F32 elapsed, Point3F& pos, MatrixF& ori, Point3F& pos2, Point3F& scale) { };
|
|
};
|
|
|
|
// New subclasses should define own updateParams() and should *not* call this thru Parent.
|
|
// This calls old form of update() for backwards compatibility.
|
|
inline void afxXM_Base::updateParams(F32 dt, F32 elapsed, afxXM_Params& p)
|
|
{
|
|
update(dt, elapsed, p.pos, p.ori, p.pos2, p.scale);
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
|
class afxXM_WeightedBaseData : public afxXM_BaseData
|
|
{
|
|
typedef afxXM_BaseData Parent;
|
|
|
|
public:
|
|
F32 lifetime;
|
|
F32 delay;
|
|
F32 fade_in_time;
|
|
F32 fade_out_time;
|
|
Point2F fadein_ease;
|
|
Point2F fadeout_ease;
|
|
F32 life_bias;
|
|
|
|
public:
|
|
/*C*/ afxXM_WeightedBaseData();
|
|
/*C*/ afxXM_WeightedBaseData(const afxXM_WeightedBaseData&, bool = false);
|
|
|
|
bool hasFixedWeight() const;
|
|
F32 getWeightFactor() const;
|
|
|
|
void packData(BitStream* stream) override;
|
|
void unpackData(BitStream* stream) override;
|
|
|
|
static void initPersistFields();
|
|
|
|
DECLARE_CONOBJECT(afxXM_WeightedBaseData);
|
|
};
|
|
|
|
class afxXM_WeightedBase : public afxXM_Base
|
|
{
|
|
typedef afxXM_Base Parent;
|
|
|
|
protected:
|
|
F32 wt_fadein;
|
|
F32 wt_fadeout;
|
|
Point2F wt_fadein_ease;
|
|
Point2F wt_fadeout_ease;
|
|
F32 wt_start_time;
|
|
F32 wt_full_time;
|
|
F32 wt_fade_time;
|
|
F32 wt_done_time;
|
|
|
|
F32 calc_weight_factor(F32 elapsed);
|
|
|
|
public:
|
|
/*C*/ afxXM_WeightedBase(afxXM_WeightedBaseData*, afxEffectWrapper*);
|
|
virtual ~afxXM_WeightedBase() { }
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
|
|
|
|
#endif // _AFX_XFM_MOD_BASE_H_
|