topical media & game development

talk show tell print

lib-game-delta3d-sdk-examples-testGameActorLibrary-testgamepropertyproxy.cpp / cpp



  /* -*-c++-*-
  * testGameActorLibrary - This source file (.h & .cpp) - Using 'The MIT License'
  * Copyright (C) 2006-2008, Alion Science and Technology Corporation
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to deal
  * in the Software without restriction, including without limitation the rights
  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  * copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
  *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
  *
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  *
  * This software was developed by Alion Science and Technology Corporation under
  * circumstances in which the U. S. Government may have rights in the software.
  *
  * Curtiss Murphy
  */
  include <testgamepropertyproxy.h>
  include <dtDAL/enginepropertytypes.h>
  include <dtActors/deltaobjectactorproxy.h>
  include <dtCore/scene.h>
  include <dtCore/object.h>
  include <dtUtil/log.h>
  include <sstream>
  
  using namespace dtCore;
  using namespace dtDAL;
  using namespace dtActors;
  
  const std::string TestGamePropertyProxy::GROUPNAME("Example Game Properties");
  
  IMPLEMENT_ENUM(TestGamePropertyActor::TestEnum);
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION1("My First Option");
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION2("Cool Stuff");
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION3("123");
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION4("Why a spoon cousin?  Because it'll hurt more.");
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION5("733T H@X0R !N D37T@3D!");
  TestGamePropertyActor::TestEnum TestGamePropertyActor::TestEnum::OPTION6("Mind what you have learned, save you it can");
  
  
////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////

TestGamePropertyActor::TestGamePropertyActor(dtGame::GameActorProxy& proxy): dtGame::GameActor(proxy), mInt(0), mReadOnlyInt(5), mFloat(0.0f), mDouble(0.0), mLong(0), mBool(0), mString(""), mEnum(&TestEnum::OPTION1) { }
////////////////////////////////////////////////////////////////////////

TestGamePropertyActor::~TestGamePropertyActor() { }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyActor::OnTickLocal(const dtGame::TickMessage& tickMessage) { //const dtGame::TickMessage &tick = // static_cast<const dtGame::TickMessage&>(tickMessage); // increment a message counter mInt++; }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyActor::OnTickRemote(const dtGame::TickMessage& tickMessage) { //const dtGame::TickMessage &tick = // static_cast<const dtGame::TickMessage&>(tickMessage); // increment a message counter mInt++; } void TestGamePropertyActor::ProcessMessage(const dtGame::Message &tickMessage) { //const dtGame::TickMessage &tick = // static_cast<const dtGame::TickMessage&>(tickMessage); // increment a message counter mInt++; }
////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////

TestGamePropertyProxy::TestGamePropertyProxy() : mRegisterListeners(false), mWasRemovedFromWorld(false) { //static int count = 0; //std::ostringstream ss; SetClassName("dtCore::TestGamePropertyProxy"); }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyProxy::BuildPropertyMap() { GameActorProxy::BuildPropertyMap(); TestGamePropertyActor& actor = static_cast<TestGamePropertyActor &>(GetGameActor()); AddProperty(new BooleanActorProperty("Test_Boolean", "Test Boolean", MakeFunctor(actor, &TestGamePropertyActor::SetTestBool), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestBool), "Holds a test Boolean property", GROUPNAME)); AddProperty(new IntActorProperty("Test_Int", "Test Int", MakeFunctor(actor, &TestGamePropertyActor::SetTestInt), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestInt), "Holds a test Int property", GROUPNAME)); dtDAL::IntActorProperty *i = new IntActorProperty("Test_Read_Only_Int", "Test_Read_Only_Int", MakeFunctor(actor, &TestGamePropertyActor::SetReadOnlyTestInt), MakeFunctorRet(actor, &TestGamePropertyActor::GetReadOnlyTestInt), "Holds a test Read Only Int property", GROUPNAME); i->SetReadOnly(true); AddProperty(i); AddProperty(new LongActorProperty("Test_Long", "Test Long", MakeFunctor(actor, &TestGamePropertyActor::SetTestLong), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestLong), "Holds a test Long property", GROUPNAME)); AddProperty(new FloatActorProperty("Test_Float", "Test Float", MakeFunctor(actor, &TestGamePropertyActor::SetTestFloat), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestFloat), "Holds a test Float property", GROUPNAME)); AddProperty(new DoubleActorProperty("Test_Double", "Test Double", MakeFunctor(actor, &TestGamePropertyActor::SetTestDouble), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestDouble), "Holds a test Double property", GROUPNAME)); AddProperty(new Vec3ActorProperty("Test_Vec3", "Test Vector3", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec3), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec3), "Holds a test Vector3 Property", GROUPNAME)); AddProperty(new Vec2ActorProperty("Test_Vec2", "Test Vector2", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec2), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec2), "Holds a test Vector2 Property", GROUPNAME)); AddProperty(new Vec4ActorProperty("Test_Vec4", "Test Vector4", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec4), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec4), "Holds a test Vector4 Property", GROUPNAME)); AddProperty(new Vec3fActorProperty("Test_Vec3f", "Test Vector3f", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec3f), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec3f), "Holds a test Vector3f Property", GROUPNAME)); AddProperty(new Vec2fActorProperty("Test_Vec2f", "Test Vector2f", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec2f), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec2f), "Holds a test Vector2f Property", GROUPNAME)); AddProperty(new Vec4fActorProperty("Test_Vec4f", "Test Vector4f", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec4f), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec4f), "Holds a test Vector4f Property", GROUPNAME)); AddProperty(new Vec3dActorProperty("Test_Vec3d", "Test Vector3d", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec3d), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec3d), "Holds a test Vector3d Property", GROUPNAME)); AddProperty(new Vec2dActorProperty("Test_Vec2d", "Test Vector2d", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec2d), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec2d), "Holds a test Vector2d Property", GROUPNAME)); AddProperty(new Vec4dActorProperty("Test_Vec4d", "Test Vector4d", MakeFunctor(actor, &TestGamePropertyActor::SetTestVec4d), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestVec4d), "Holds a test Vector4d Property", GROUPNAME)); AddProperty(new StringActorProperty("Test_String", "Test String", MakeFunctor(actor, &TestGamePropertyActor::SetTestString), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestString), "Holds a test String property (unlimited length)", GROUPNAME)); StringActorProperty *stringProp = new StringActorProperty("Test_String2", "Test String (max 10)", MakeFunctor(actor, &TestGamePropertyActor::SetTestStringWithLength), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestStringWithLength), "Holds a test String property with a max length of 10", GROUPNAME); stringProp->SetMaxLength(10); AddProperty(stringProp); AddProperty(new ColorRgbaActorProperty("Test_Color", "Test Color", MakeFunctor(actor, &TestGamePropertyActor::SetTestColor), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestColor), "Holds a test Color property", GROUPNAME)); AddProperty(new EnumActorProperty<TestGamePropertyActor::TestEnum>("Test_Enum", "Test Enum", MakeFunctor(actor, &TestGamePropertyActor::SetTestEnum), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestEnum), "Holds a test Enum property", GROUPNAME)); //AddProperty(new ResourceActorProperty(*this, DataType::SOUND, "Test_Sound_Resource", "Test Sound", // MakeFunctor(actor, &TestGamePropertyActor::SetSoundResourceName), // "An example sound resource property", GROUPNAME)); //AddProperty(new ResourceActorProperty(*this, DataType::TEXTURE, "Test_Texture_Resource", "Texture", // MakeFunctor(actor, &TestGamePropertyActor::SetTextureResourceName), // "An example texture resource property", GROUPNAME)); AddProperty(new ActorIDActorProperty(*this, "Test_Actor_Id", "Test Actor Id", dtDAL::ActorIDActorProperty::SetFuncType(&actor, &TestGamePropertyActor::SetTestActorId), dtDAL::ActorIDActorProperty::GetFuncType(&actor, &TestGamePropertyActor::GetTestActorId), "dtCore::Transformable", "An example linked actor property", GROUPNAME)); AddProperty(new GameEventActorProperty(*this, "TestGameEvent", "Test Game Event", MakeFunctor(actor, &TestGamePropertyActor::SetTestGameEvent), MakeFunctorRet(actor, &TestGamePropertyActor::GetTestGameEvent), "Holds a test game event property", GROUPNAME)); }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyProxy::CreateActor() { SetActor(*new TestGamePropertyActor(*this)); }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyProxy::OnEnteredWorld() { if (mRegisterListeners) { //Register an invokable for Game Events... RegisterForMessages(dtGame::MessageType::INFO_GAME_EVENT); // Register an invokable for tick messages. Local or Remote only, not both! if (IsRemote()) RegisterForMessages(dtGame::MessageType::TICK_REMOTE, dtGame::GameActorProxy::TICK_REMOTE_INVOKABLE); else RegisterForMessages(dtGame::MessageType::TICK_LOCAL, dtGame::GameActorProxy::TICK_LOCAL_INVOKABLE); } dtGame::GameActorProxy::OnEnteredWorld(); }
////////////////////////////////////////////////////////////////////////

void TestGamePropertyProxy::OnRemovedFromWorld() { mWasRemovedFromWorld = true; }


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.