Panda3D
Loading...
Searching...
No Matches
movingPart.I
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 movingPart.I
10 * @author drose
11 * @date 1999-02-22
12 */
13
14#include "animChannelFixed.h"
15#include "datagram.h"
16#include "datagramIterator.h"
17#include "bamReader.h"
18#include "bamWriter.h"
19
20template<class SwitchType>
22
23// We don't need to explicitly call MovingPart::init_type(), because it is an
24// abstract class and therefore must have derived objects. Its derived
25// objects will call init_type() for us.
26
27
28
29/**
30 * Normally, you'd use make_copy() or copy_subgraph() to make a copy of this.
31 */
32template<class SwitchType>
35 MovingPartBase(copy),
36 _value(copy._value),
37 _default_value(copy._default_value)
38{
41/**
42 *
43 */
44template<class SwitchType>
46MovingPart(PartGroup *parent, const std::string &name,
47 const ValueType &default_value) :
48 MovingPartBase(parent, name),
49 _value(default_value),
50 _default_value(default_value)
51{
52}
53
54/**
55 *
56 */
57template<class SwitchType>
59MovingPart() {
60}
61
62/**
63 * Returns the TypeHandle associated with the ValueType we are concerned with.
64 * This is provided to allow a bit of run-time checking that joints and
65 * channels are matching properly in type.
66 */
67template<class SwitchType>
69get_value_type() const {
70 return get_type_handle(ValueType);
71}
72
73
74
75/**
76 * Creates and returns a new AnimChannel that is not part of any hierarchy,
77 * but that returns the default value associated with this part.
78 */
79template<class SwitchType>
82 return new AnimChannelFixed<SwitchType>(get_name(), _default_value);
83}
84
85/**
86 * Outputs a very brief description of the channel's current value.
87 */
88template<class SwitchType>
90output_value(std::ostream &out) const {
91 SwitchType::output_value(out, _value);
92}
93
94/**
95 * Function to write the important information in the particular object to a
96 * Datagram
97 */
98template<class SwitchType>
100write_datagram(BamWriter *manager, Datagram &me) {
102 SwitchType::write_datagram(me, _value);
103 SwitchType::write_datagram(me, _default_value);
104}
105
106/**
107 * Function that reads out of the datagram (or asks manager to read) all of
108 * the data that is needed to re-create this object and stores it in the
109 * appropiate place
110 */
111template<class SwitchType>
113fillin(DatagramIterator &scan, BamReader *manager) {
114 MovingPartBase::fillin(scan, manager);
115 SwitchType::read_datagram(scan, _value);
116 SwitchType::read_datagram(scan, _default_value);
117}
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
Parent class for all animation channels.
This template class is a special kind of AnimChannel that always returns just one fixed value.
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
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
This is the base class for a single animatable piece that may be bound to one channel (or more,...
virtual void write_datagram(BamWriter *manager, Datagram &dg)
Writes the contents of this object to the datagram for shipping out to a Bam file.
This is the template instantiation of MovingPartBase, on the particular type of value provided by the...
Definition movingPart.h:27
virtual void output_value(std::ostream &out) const
Outputs a very brief description of the channel's current value.
Definition movingPart.I:90
virtual void write_datagram(BamWriter *manager, Datagram &me)
Function to write the important information in the particular object to a Datagram.
Definition movingPart.I:100
virtual TypeHandle get_value_type() const
Returns the TypeHandle associated with the ValueType we are concerned with.
Definition movingPart.I:69
virtual AnimChannelBase * make_default_channel() const
Creates and returns a new AnimChannel that is not part of any hierarchy, but that returns the default...
Definition movingPart.I:81
This is the base class for PartRoot and MovingPart.
Definition partGroup.h:43
TypeHandle is the identifier used to differentiate C++ class types.
Definition typeHandle.h:81
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.