00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <tank/TankModelContainer.h>
00022 #include <tank/TankModelStore.h>
00023 #ifndef S3D_SERVER
00024 #include <tankgraph/TargetRendererImplTank.h>
00025 #endif
00026 #include <engine/ScorchedContext.h>
00027 #include <common/DefinesString.h>
00028
00029 TankModelContainer::TankModelContainer(
00030 const char *modelName,
00031 const char *typeName) :
00032 tankModelName_(modelName),
00033 tankTypeName_(typeName),
00034 tankOriginalModelName_(modelName)
00035 {
00036 }
00037
00038 TankModelContainer::~TankModelContainer()
00039 {
00040 }
00041
00042 void TankModelContainer::setTankModelName(
00043 const char *modelName, const char *originalModelName, const char *typeName)
00044 {
00045 if (0 != strcmp(modelName, tankModelName_.c_str()) ||
00046 0 != strcmp(originalModelName, tankOriginalModelName_.c_str()))
00047 {
00048 #ifndef S3D_SERVER
00049 if (tank_->getRenderer())
00050 {
00051 TargetRendererImplTank *renderer = (TargetRendererImplTank *)
00052 tank_->getRenderer();
00053 renderer->resetModel();
00054 }
00055 #endif
00056 }
00057
00058 tankModelName_ = modelName;
00059 tankOriginalModelName_ = originalModelName;
00060 tankTypeName_ = typeName;
00061 }
00062
00063 bool TankModelContainer::writeMessage(NetBuffer &buffer)
00064 {
00065 buffer.addToBuffer(tankModelName_);
00066 buffer.addToBuffer(tankOriginalModelName_);
00067 buffer.addToBuffer(tankTypeName_);
00068 return true;
00069 }
00070
00071 bool TankModelContainer::readMessage(NetBufferReader &reader)
00072 {
00073 std::string newModelName, newTypeName, newOrignalName;
00074 if (!reader.getFromBuffer(newModelName)) return false;
00075 if (!reader.getFromBuffer(newOrignalName)) return false;
00076 if (!reader.getFromBuffer(newTypeName)) return false;
00077 setTankModelName(
00078 newModelName.c_str(),
00079 newOrignalName.c_str(),
00080 newTypeName.c_str());
00081 return true;
00082 }