| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Filename: cDistributedSmoothNodeBase.h
- // Created by: drose (03Sep04)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved
- //
- // All use of this software is subject to the terms of the Panda 3d
- // Software license. You should have received a copy of this license
- // along with this source code; you will also find a current copy of
- // the license at http://etc.cmu.edu/panda3d/docs/license/ .
- //
- // To contact the maintainers of this program write to
- // [email protected] .
- //
- ////////////////////////////////////////////////////////////////////
- #ifndef CDISTRIBUTEDSMOOTHNODEBASE_H
- #define CDISTRIBUTEDSMOOTHNODEBASE_H
- #include "directbase.h"
- #include "nodePath.h"
- #include "dcbase.h"
- #include "dcPacker.h"
- #include "dcPython.h" // to pick up Python.h
- class DCClass;
- class CConnectionRepository;
- ////////////////////////////////////////////////////////////////////
- // Class : CDistributedSmoothNodeBase
- // Description : This class defines some basic methods of
- // DistributedSmoothNodeBase which have been moved into
- // C++ as a performance optimization.
- ////////////////////////////////////////////////////////////////////
- class EXPCL_DIRECT CDistributedSmoothNodeBase {
- PUBLISHED:
- CDistributedSmoothNodeBase();
- ~CDistributedSmoothNodeBase();
-
- INLINE static void
- set_repository(CConnectionRepository *repository,
- bool is_ai, CHANNEL_TYPE ai_id);
- INLINE static void
- set_clock_delta(PyObject *clock_delta);
- void initialize(const NodePath &node_path, DCClass *dclass,
- CHANNEL_TYPE do_id);
- void send_everything();
- void broadcast_pos_hpr_full();
- void broadcast_pos_hpr_xyh();
- private:
- INLINE static bool only_changed(int flags, int compare);
- INLINE void d_setSmStop();
- INLINE void d_setSmH(float h);
- INLINE void d_setSmXY(float x, float y);
- INLINE void d_setSmXZ(float x, float z);
- INLINE void d_setSmPos(float x, float y, float z);
- INLINE void d_setSmHpr(float h, float p, float r);
- INLINE void d_setSmXYH(float x, float y, float h);
- INLINE void d_setSmXYZH(float x, float y, float z, float h);
- INLINE void d_setSmPosHpr(float x, float y, float z, float h, float p, float r);
- void begin_send_update(DCPacker &packer, const string &field_name);
- void finish_send_update(DCPacker &packer);
- enum Flags {
- F_new_x = 0x01,
- F_new_y = 0x02,
- F_new_z = 0x04,
- F_new_h = 0x08,
- F_new_p = 0x10,
- F_new_r = 0x20,
- };
- NodePath _node_path;
- DCClass *_dclass;
- CHANNEL_TYPE _do_id;
- static CConnectionRepository *_repository;
- static bool _is_ai;
- static CHANNEL_TYPE _ai_id;
- static PyObject *_clock_delta;
- LPoint3f _store_xyz;
- LVecBase3f _store_hpr;
- bool _store_stop;
- };
- #include "cDistributedSmoothNodeBase.I"
- #endif // CDISTRIBUTEDSMOOTHNODEBASE_H
|