HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
globalvar.C
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2024
3  * Side Effects Software Inc. All rights reserved.
4  *
5  * Redistribution and use of Houdini Development Kit samples in source and
6  * binary forms, with or without modification, are permitted provided that the
7  * following conditions are met:
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. The name of Side Effects Software may not be used to endorse or
11  * promote products derived from this software without specific prior
12  * written permission.
13  *
14  * THIS SOFTWARE IS PROVIDED BY SIDE EFFECTS SOFTWARE `AS IS' AND ANY EXPRESS
15  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
17  * NO EVENT SHALL SIDE EFFECTS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
18  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
20  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  *----------------------------------------------------------------------------
26  */
27 
28 #include <UT/UT_DSOVersion.h>
29 #include <CH/CH_LocalVariable.h>
30 #include <CMD/CMD_Manager.h>
31 
32 static bool
33 getMSValueFloat(fpreal &f, int varid, int thread)
34 {
35  f = CHgetManager()->getEvaluateTime(thread) * 1000.0;
36 
37  return true;
38 }
39 
40 static bool
41 getProjValueStr(UT_String &str, int varid, int thread)
42 {
43  str.harden("My Project Name");
44  return true;
45 }
46 
47 void
49 {
50  static const char *theProjName = "PROJ";
51  static const char *theMSName = "MS";
52 
53  // Pass zero for the index value int the CH_LocalVariable initializers,
54  // since it will just be replaced anyway. The actual variable id is
55  // returned, in case you want several variables to be evaluated through the
56  // same function. In this case we don't care, so just throw the values
57  // away.
58  mgr->addVariable({theProjName, 0, CH_VARIABLE_STRVAL},
59  getProjValueStr, NULL, NULL);
60  mgr->addVariable({theMSName, 0, CH_VARIABLE_TIME},
61  NULL, getMSValueFloat, NULL);
62 }
63 
void CMDextendLibrary(CMD_Manager *mgr)
Definition: globalvar.C:48
int addVariable(const CH_LocalVariable &var, CH_StringVarEvalFunc strfunc, CH_FloatVarEvalFunc floatfunc, CH_IntVarEvalFunc intfunc) const
GLfloat f
Definition: glcorearb.h:1926
CH_Manager * CHgetManager()
Definition: CH_Manager.h:2079
void harden()
Take shallow copy and make it deep.
Definition: UT_String.h:215
#define CH_VARIABLE_TIME
#define CH_VARIABLE_STRVAL
fpreal getEvaluateTime(int thread) const
Functions for obtaining and setting the current evaluation time.
Definition: CH_Manager.h:1436
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
fpreal64 fpreal
Definition: SYS_Types.h:277