| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- // Filename: PolylightNode.h
- // Created by: sshodhan (02Jun04)
- //
- ////////////////////////////////////////////////////////////////////
- //
- // PANDA 3D SOFTWARE
- // Copyright (c) Carnegie Mellon University. All rights reserved.
- //
- // All use of this software is subject to the terms of the revised BSD
- // license. You should have received a copy of this license along
- // with this source code in a file named "LICENSE."
- //
- ////////////////////////////////////////////////////////////////////
- #ifndef POLYLIGHTNODE_H
- #define POLYLIGHTNODE_H
- #include "pandabase.h"
- #include "luse.h"
- #include "nodePath.h"
- #include "pmap.h"
- #include "pnotify.h"
- #include "pandaNode.h"
- #include "colorAttrib.h"
- ////////////////////////////////////////////////////////////////////
- // Class : PolylightNode
- // Description : A PolylightNode
- ////////////////////////////////////////////////////////////////////
- class EXPCL_PANDA_PGRAPH PolylightNode : public PandaNode{
- //private:
- PUBLISHED:
- /*
- // This was the old constructor... interrogate would generate a
- // separate wrapper for each parameter... so its better to
- // have a simpler constructor and require the programmer
- // to use set_* methods.
- PolylightNode(const string &name, float x = 0.0, float y = 0.0, float z = 0.0,
- float r = 1.0, float g = 1.0, float b = 1.0,
- float radius=50.0, string attenuation_type= "linear",
- bool flickering =false, string flicker_type="random");
- */
- enum Flicker_Type {
- FRANDOM,
- FSIN,
- FCUSTOM,
- };
- enum Attenuation_Type {
- ALINEAR,
- AQUADRATIC,
- };
- PolylightNode(const string &name);
- INLINE void enable();
- INLINE void disable();
- INLINE void set_pos(LVecBase3f position);
- INLINE void set_pos(float x,float y, float z);
- INLINE LVecBase3f get_pos() const;
- INLINE void set_color(Colorf color);
- INLINE void set_color(float r, float g, float b);
- INLINE Colorf get_color() const;
- INLINE Colorf get_color_scenegraph() const;
- INLINE void set_radius(float r);
- INLINE float get_radius() const;
- INLINE bool set_attenuation(Attenuation_Type type);
- INLINE Attenuation_Type get_attenuation() const;
- INLINE void set_a0(float a0);
- INLINE void set_a1(float a1);
- INLINE void set_a2(float a2);
- INLINE float get_a0() const;
- INLINE float get_a1() const;
- INLINE float get_a2() const;
- INLINE void flicker_on();
- INLINE void flicker_off();
- INLINE bool is_flickering() const;
- INLINE bool set_flicker_type(Flicker_Type type);
- INLINE Flicker_Type get_flicker_type() const;
- INLINE void set_offset(float offset);
- INLINE float get_offset() const;
- INLINE void set_scale(float scale);
- INLINE float get_scale() const;
- INLINE void set_step_size(float step) ;
- INLINE float get_step_size() const;
- INLINE void set_freq(float f);
- INLINE float get_freq() const;
- // Comparison methods
- INLINE bool operator == (const PolylightNode &other) const;
- INLINE bool operator != (const PolylightNode &other) const;
- INLINE bool operator < (const PolylightNode &other) const;
- int compare_to(const PolylightNode &other) const;
- INLINE bool is_enabled() const;
- public:
- Colorf flicker() const;
- virtual PandaNode *make_copy() const;
-
- private:
- bool _enabled;
- LVecBase3f _position;
- Colorf _color;
- float _radius;
- Attenuation_Type _attenuation_type;
- float _a0;
- float _a1;
- float _a2;
- bool _flickering;
- Flicker_Type _flicker_type;
- float _offset;
- float _scale;
- float _step_size;
- float _sin_freq;
- //float _speed;
- //float fixed_points
-
- public:
- static void register_with_read_factory();
- virtual void write_datagram(BamWriter *manager, Datagram &dg);
- virtual void output(ostream &out) const;
- protected:
- static TypedWritable *make_from_bam(const FactoryParams ¶ms);
- void fillin(DatagramIterator &scan, BamReader *manager);
- public:
- static TypeHandle get_class_type() {
- return _type_handle;
- }
- static void init_type() {
- PandaNode::init_type();
- register_type(_type_handle, "PolylightNode",
- PandaNode::get_class_type());
- }
- virtual TypeHandle get_type() const {
- return get_class_type();
- }
- virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
- private:
- static TypeHandle _type_handle;
- };
- #include "polylightNode.I"
- #endif
|