Torque3D Documentation / _generateds / afxEA_AnimLock.cpp

afxEA_AnimLock.cpp

Engine/source/afx/ea/afxEA_AnimLock.cpp

More...

Classes:

Detailed Description

  1
  2
  3//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
  4// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames
  5// Copyright (C) 2015 Faust Logic, Inc.
  6//
  7// Permission is hereby granted, free of charge, to any person obtaining a copy
  8// of this software and associated documentation files (the "Software"), to
  9// deal in the Software without restriction, including without limitation the
 10// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 11// sell copies of the Software, and to permit persons to whom the Software is
 12// furnished to do so, subject to the following conditions:
 13//
 14// The above copyright notice and this permission notice shall be included in
 15// all copies or substantial portions of the Software.
 16//
 17// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 18// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 20// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 23// IN THE SOFTWARE.
 24//
 25//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
 26
 27#include <typeinfo>
 28#include "afx/arcaneFX.h"
 29#include "afx/afxEffectDefs.h"
 30#include "afx/afxEffectWrapper.h"
 31#include "afx/ce/afxAnimLock.h"
 32
 33//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
 34// afxEA_AnimLock 
 35
 36class afxEA_AnimLock : public afxEffectWrapper
 37{
 38  typedef afxEffectWrapper Parent;
 39
 40  bool              started;
 41  U32               lock_tag;
 42
 43public:
 44  /*C*/             afxEA_AnimLock();
 45
 46  virtual bool      ea_update(F32 dt);
 47  virtual void      ea_finish(bool was_stopped);
 48};
 49
 50//~~~~~~~~~~~~~~~~~~~~//
 51
 52afxEA_AnimLock::afxEA_AnimLock()
 53{
 54  started = false;
 55  lock_tag = 0;
 56}
 57
 58bool afxEA_AnimLock::ea_update(F32 dt)
 59{
 60  afxConstraint* pos_constraint = getPosConstraint();
 61  if (!started && pos_constraint != 0)
 62  {
 63    lock_tag = pos_constraint->lockAnimation();
 64    started = true;
 65  }
 66
 67  return true;
 68}
 69
 70void afxEA_AnimLock::ea_finish(bool was_stopped)
 71{
 72  afxConstraint* pos_constraint = getPosConstraint();
 73  if (pos_constraint && lock_tag != 0)
 74  {
 75    pos_constraint->unlockAnimation(lock_tag);
 76  }
 77
 78  started = false;
 79}
 80
 81//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
 82
 83class afxEA_AnimLockDesc : public afxEffectAdapterDesc, public afxEffectDefs 
 84{
 85  static afxEA_AnimLockDesc desc;
 86
 87public:
 88  virtual bool  testEffectType(const SimDataBlock*) const;
 89  virtual bool  requiresStop(const afxEffectWrapperData*, const afxEffectTimingData&) const;
 90  virtual bool  runsOnServer(const afxEffectWrapperData*) const { return true; }
 91  virtual bool  runsOnClient(const afxEffectWrapperData*) const { return true; }
 92  virtual bool  isPositional(const afxEffectWrapperData*) const { return false; }
 93
 94  virtual afxEffectWrapper* create() const { return new afxEA_AnimLock; }
 95};
 96
 97afxEA_AnimLockDesc afxEA_AnimLockDesc::desc;
 98
 99bool afxEA_AnimLockDesc::testEffectType(const SimDataBlock* db) const
100{
101  return (typeid(afxAnimLockData) == typeid(*db));
102}
103
104bool afxEA_AnimLockDesc::requiresStop(const afxEffectWrapperData* ew, const afxEffectTimingData& timing) const
105{
106  return (timing.lifetime < 0);
107}
108
109//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~//
110