Panda3D
Loading...
Searching...
No Matches
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...
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.
virtual PandaNode * make_copy() const
Returns a newly-allocated PandaNode that is a shallow copy of this one.
static void register_with_read_factory()
Tells the BamReader how to create objects of type PointLight.
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
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.
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(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This class maintains different copies of a page of data between stages of the graphics pipeline (or a...