//===========================================================================// // File: myomers.cpp // // Project: BattleTech Brick: Mech subsystems // // Contents: Myomers -- artificial-muscle locomotion power // //---------------------------------------------------------------------------// // Copyright (C) 1995, Virtual World Entertainment, Inc. // // All Rights reserved worldwide // // This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL // //===========================================================================// #include #pragma hdrstop #if !defined(MYOMERS_HPP) # include #endif #if !defined(MECH_HPP) # include #endif Derivation Myomers::ClassDerivations( PoweredSubsystem::ClassDerivations, "Myomers" ); Myomers::SharedData Myomers::DefaultData( Myomers::ClassDerivations, Subsystem::MessageHandlers, Subsystem::AttributeIndex, Subsystem::StateCount ); Myomers::Myomers( Mech *owner, int subsystem_ID, SubsystemResource *resource, SharedData &shared_data ): PoweredSubsystem(owner, subsystem_ID, resource, shared_data) { Check(owner); Check_Pointer(resource); speedEffect = 1.0f; heatRange = failureTemperature - degradationTemperature; heatRangeSquared = heatRange * heatRange; velocityEfficiency = resource->velocityEfficiency; accelerationEfficiency = resource->accelerationEfficiency; // // Build the seek-voltage drive table: each resource fraction scaled by the // powering generator's rated voltage. The voltage source is resolved once // AttachToVoltageSource runs (phase-4 wiring); until then it is null and the // table scales to zero. // Generator *source = (Generator *)ResolveVoltageSource(); Scalar srcRated = (source != NULL) ? source->ratedVoltage : 0.0f; maxSeekVoltageIndex = -1; int count = 0; while (count < 5) { if (resource->seekVoltage[count] == -1.0f) { maxSeekVoltageIndex = count - 1; break; } seekVoltage[count] = resource->seekVoltage[count] * srcRated; ++count; } if (maxSeekVoltageIndex < 0) { maxSeekVoltageIndex = count - 1; } minSeekVoltageIndex = 0; recommendedSeekVoltageIndex = resource->seekVoltageRecommendedIndex; currentSeekVoltageIndex = recommendedSeekVoltageIndex; Check_Fpu(); } Myomers::~Myomers() { } Logical Myomers::TestClass(Mech &) { return True; } Logical Myomers::TestInstance() const { return IsDerivedFrom(ClassDerivations); } // // Per-frame: convert seek voltage into locomotion speed/acceleration effect. // Not yet reconstructed. // void Myomers::MyomersSimulation(Scalar) { Fail("Myomers::MyomersSimulation -- myomers.cpp not yet reconstructed"); }