Files
2025-12-15 22:10:55 +08:00

190 lines
6.2 KiB
C++

/***********************************************************************************************************************
*
* Copyright (c) 2010 - 2022 by Tech Soft 3D, Inc.
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
* scope and manner of such use.
*
***********************************************************************************************************************/
/**
\file AnimDefStepInits.cpp
Definition of motions for initial states of all animations (=steps here)
***********************************************************************************************************************/
// Do not define INITIALIZE_A3D_API here. It should be only included once in a project.
#include "AnimDef.hpp"
//######################################################################################################################
/*
handling init states: we must be able to replay each step at any moment. This means that each step must start with the
good init state, always restored. This init state is inherited from past steps.
*/
A3DStatus CreateMotionsInitState(A3DPDFAnimMotion**& ppMotion, int& idxMotion,
int iMaxStep,
double dStepInitTimeOffset,
double& dStepTimeDuration)
{
A3DStatus iRet = A3D_SUCCESS;
double dInitTimeOffset=dStepInitTimeOffset;
double dTimeDuration;
// MOTIONS to specify init state
// Step 0 = all at init pos; all visible
if(iMaxStep >= 1)
{
CreateMotionMoveInitTransfo(ppMotion, idxMotion,
ppTargetsAllModel, idxTargetsAllModel,
0.0, 0.0, 0.0, // translation to set to the matrix
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset opacity : all visibles
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsAllModel, idxTargetsAllModel,
-1,-1,-1, // color init
1.0,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset washer color to initial color
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsWasher, idxTargetsWasher,
1, 1, 0, // color init
-1,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// MOTIONS to specify init state
// End Step 1 = same ending state as init
if(iMaxStep >= 2)
{
}
// End Step 2 = all screws translated and hidden
if(iMaxStep >= 3)
{
CreateMotionMoveInitTransfo(ppMotion, idxMotion,
ppTargetsScrews, idxTargetsScrews,
-80.0, 0.0, 0.0, // translation to set to the matrix
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset opacity
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsScrews, idxTargetsScrews,
-1, -1, -1, // color init
0.0,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// End Step 3 = carbu translated and hidden
if(iMaxStep >= 4)
{
CreateMotionMoveInitTransfo(ppMotion, idxMotion,
ppTargetsCarbu, idxTargetsCarbu,
0.0, 0.0, -40.0, // translation to set to the matrix
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset opacity
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsCarbu, idxTargetsCarbu,
-1, -1, -1, // color init
0.0,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// End Step 4 = hfront translated and hidden
if(iMaxStep >= 5)
{
CreateMotionMoveInitTransfo(ppMotion, idxMotion,
ppTargetsHousingFront, idxTargetsHousingFront,
+80.0, 0.0, 0.0, // translation to set to the matrix
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset opacity
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsHousingFront, idxTargetsHousingFront,
-1, -1, -1, // color init
0.0,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// End Step 5 = casingfront translated and hidden
if(iMaxStep >= 6)
{
CreateMotionMoveInitTransfo(ppMotion, idxMotion,
ppTargetsCasingFront, idxTargetsCasingFront,
0.0, +80.0, 0.0, // translation to set to the matrix
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
// reset opacity
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsCasingFront, idxTargetsCasingFront,
-1, -1, -1, // color init
0.0,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// End Step 6 = washer replaced with new color
if(iMaxStep >= 7)
{
// reset washer color to initial color
CreateMotionAppearInit(ppMotion, idxMotion,
ppTargetsWasher, idxTargetsWasher,
1, 0, 1, // color init
-1,
kA3DPDFRenderingSolid,
dInitTimeOffset,
dTimeDuration);
// DO NOT change the init time (we just want to define the initial state)
//dInitTimeOffset += dTimeDuration;
}
// we need to play all these motions simultaneously
dStepTimeDuration = 0.5;
//dStepTimeDuration = dInitTimeOffset - dStepInitTimeOffset;
return iRet;
}