RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
clphongchild.cpp
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
30 #include "misc/color.h"
31 #include "clengine/clphongchild.h"
32 
33 //-----------------------------------------------------------------------------
34 
36  m_value = NULL;
37 }
38 
39 //-----------------------------------------------------------------------------
40 
42  copyValuesFromObject(original_obj);
43 }
44 
45 //-----------------------------------------------------------------------------
46 
48  if (this == &original_obj) {
49  return *this;
50  }
51 
52  copyValuesFromObject(original_obj);
53 
54  return *this;
55 }
56 
57 //-----------------------------------------------------------------------------
58 
60  void* original_value = original_obj.getValue();
61  void* copy_value = NULL;
62 
63  switch (original_obj.getValueType()) {
64  case COLOR_TYPE:
65  copy_value = new Color(*(Color*)original_value);
66  break;
67  case TEXTURE_TYPE:
68  copy_value = new char[strlen((char*)original_value)];
69  strcpy_s((char*)copy_value, strlen((char*)original_value)+1, (char*)original_value);
70  break;
71  case FLOAT_TYPE:
72  copy_value = new float(*(float*)original_value);
73  break;
74  }
75  setValue(copy_value, original_obj.getValueType());
76 }
77 
78 //-----------------------------------------------------------------------------
79 
80 void* CLPhongChild::getValue() const {
81  return m_value;
82 }
83 
84 //-----------------------------------------------------------------------------
85 
86 void CLPhongChild::setValue(void* value, PhongChildType value_type) {
87  m_value = value;
88  setValueType(value_type);
89 }
90 
91 //-----------------------------------------------------------------------------
92 
94  return m_valueType;
95 }
96 
97 //-----------------------------------------------------------------------------
98 
100  m_valueType = value_type;
101 }
102 
103 //-----------------------------------------------------------------------------
104 
106  switch (getValueType()) {
107  case COLOR_TYPE:
108  SAFE_RELEASE(reinterpret_cast<Color*>(m_value));
109  break;
110  case TEXTURE_TYPE:
111  // TODO delete m_value; crashes the engine
112  break;
113  case FLOAT_TYPE:
114  // TODO delete m_value; crashes the engine
115  break;
116  }
117 }
virtual void copyValuesFromObject(const CLPhongChild &phong_child)
void setValueType(PhongChildType value_type)
CLPhongChild & operator=(const CLPhongChild &phong_child)
void setValue(void *value, PhongChildType value_type)
Definition: color.h:29
PhongChildType getValueType() const
CLPhongChild(void)
#define SAFE_RELEASE(x)
Definition: cobject.h:36
void * getValue() const