Panda3D
sphereLight.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file sphereLight.h
10 * @author rdb
11 * @date 2016-04-15
12 */
13
14#ifndef SPHERELIGHT_H
15#define SPHERELIGHT_H
16
17#include "pandabase.h"
18
19#include "lightLensNode.h"
20#include "pointLight.h"
21
22/**
23 * A sphere light is like a point light, except that it represents a sphere
24 * with a radius, rather than being an infinitely thin point in space.
25 *
26 * @since 1.10.0
27 */
28class EXPCL_PANDA_PGRAPHNODES SphereLight : public PointLight {
29PUBLISHED:
30 explicit SphereLight(const std::string &name);
31
32protected:
33 SphereLight(const SphereLight &copy);
34
35public:
36 virtual PandaNode *make_copy() const;
37 virtual void xform(const LMatrix4 &mat);
38 virtual void write(std::ostream &out, int indent_level) const;
39
40PUBLISHED:
41 INLINE PN_stdfloat get_radius() const;
42 INLINE void set_radius(PN_stdfloat radius);
43 MAKE_PROPERTY(radius, get_radius, set_radius);
44
45private:
46 // This is the data that must be cycled between pipeline stages.
47 class EXPCL_PANDA_PGRAPHNODES CData : public CycleData {
48 public:
49 INLINE CData();
50 INLINE CData(const CData &copy);
51 virtual CycleData *make_copy() const;
52 virtual void write_datagram(BamWriter *manager, Datagram &dg) const;
53 virtual void fillin(DatagramIterator &scan, BamReader *manager);
54 virtual TypeHandle get_parent_type() const {
55 return SphereLight::get_class_type();
56 }
57
58 PN_stdfloat _radius;
59 };
60
62 typedef CycleDataReader<CData> CDReader;
63 typedef CycleDataWriter<CData> CDWriter;
64
65public:
66 static void register_with_read_factory();
67 virtual void write_datagram(BamWriter *manager, Datagram &dg);
68
69protected:
70 static TypedWritable *make_from_bam(const FactoryParams &params);
71 void fillin(DatagramIterator &scan, BamReader *manager);
72
73public:
74 static TypeHandle get_class_type() {
75 return _type_handle;
76 }
77 static void init_type() {
78 PointLight::init_type();
79 register_type(_type_handle, "SphereLight",
80 PointLight::get_class_type());
81 }
82 virtual TypeHandle get_type() const {
83 return get_class_type();
84 }
85 virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
86
87private:
88 static TypeHandle _type_handle;
89};
90
91#include "sphereLight.I"
92
93#endif
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
Definition: bamReader.h:110
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
Definition: bamWriter.h:63
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
A single page of data maintained by a PipelineCycler.
Definition: cycleData.h:50
A class to retrieve the individual data elements previously stored in a Datagram.
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
Definition: datagram.h:38
An instance of this class is passed to the Factory when requesting it to do its business and construc...
Definition: factoryParams.h:36
A basic node of the scene graph or data graph.
Definition: pandaNode.h:65
A light originating from a single point in space, and shining in all directions.
Definition: pointLight.h:25
virtual void xform(const LMatrix4 &mat)
Transforms the contents of this PandaNode by the indicated matrix, if it means anything to do so.
Definition: pointLight.cxx:119
virtual PandaNode * make_copy() const
Returns a newly-allocated PandaNode that is a shallow copy of this one.
Definition: pointLight.cxx:110
static void register_with_read_factory()
Tells the BamReader how to create objects of type PointLight.
Definition: pointLight.cxx:221
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
Definition: pointLight.cxx:230
A sphere light is like a point light, except that it represents a sphere with a radius,...
Definition: sphereLight.h:28
TypeHandle is the identifier used to differentiate C++ class types.
Definition: typeHandle.h:81
Base class for objects that can be written to and read from Bam files.
Definition: typedWritable.h:35
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
Definition: register_type.I:22
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.