Send information to Maya node instance in cpp - c++

I am currently developing a Maya plug-in in cpp. From the main class, I create a custom node instance (MPxLocatorNode) using the MDagModifier createNode command. However, how can I pass information (a bunch of floats) to this custom node so that it takes them into account and acts upon it ?I believe the plugs will help me, but I have no clue where to start: In the main class, how to link a plug to the instance and in the instance how to receive the plugs knowing that compute doesn't seem to be used as the instance does not have any input.Thanks.

Related

How to access another BP actor's component in c++?

I am new to Unreal (switched from Unity) and still have some troubles understanding the main concepts, in this case how to access other objects and their components via c++ scriptig. I am using UE5 (but I guess solutions for UE4 should also work fine).
My Project looks as followed:
In my scene I have an "Target" Actor (Blueprintclass) that has a self written c++ "movement" component with some public function to update its position.
More over I have an "Experiment" BP Actor that has a "TrialProcedure" c++ component attached.
Here is what I want to do: I want to run the Target's movent component's update position function from this Actor's component.
I guess once I can access the Target Actor, I can use GetComponentByClass() to access the component I need and than run it's method. But how do I get access to that other actor without using blueprints? The Actor is already there so I don't want to spawn it from code.
Thanks in advance!
That is a sub-optimal solution. Use a collision and get the Other Actor, then try to cast it to your desired class if it's a collision event. If it fails, don't do anything but if it doesn't, pull a pin from that and execute your functions.
A better alternative to your current solution would be to use the Get All Actors of Class function if you only have a single target. Just use the Get (a copy) node and you'll have your target blueprint. There's a C++ version of the function as well. If you have more than one file, then you'll have to check stuff.

Object breaks hierarchy in play mode

I am trying Unreal, arguably for the first time, I have attached an object to another. It breaks out of hierarchy when I hit play and becomes root object in world outliner. Someone who can enlighten me..?
You can only attach one object to another inside a blueprint.
If it's a skeletal mesh that you're using you need to assign it to a socket in the settings by creating a socket first in the physics asset or attach it to a bone.

Create a new application in ns-2: fail to transmit any packet

I'd like to ask for your help on creating a user-defined application in ns-2.
I tried to create a new application for simulating scheduling policies by modifying the code of CBR traffic application.
I've finished c++ files and tried to do the simulation with the oTcl script. When I run the ns, it turns out that the application does not transmit any packet. To make sure that my Tcl script is correct, I change the application to CBR and then the program can indeed transmit packets.
It seems that the Tcl commands could not access the functions which I define in the c++ domain.
Should I do anything else in the oTcl domain?
I'm wondering if there is anyone who has ever came across the similar situation.
The following are what I've done so far:
Create a new application class in c++ domain.
Create a static shadow object by deriving from TclClass
Create instprocs by defining the function "int command(argc, argv)" in c++ domain.
In oTcl domain: define an instproc init and use -superclass to declare that the new application is a derived class from "Application" class.
Thank you very much for your generous help.

Where to declare object returned from Qt SIGNAL/SLOT?

I've got a FTP application written in c++. Now I'm adding a simple GUI to my project via the Qt plugin for VS2010. The mechanism to connect to the server is very simple. After typing both IP and PORT the connection is stablished and an object is created. This object (from a class I've written) can call several functions such as: ask for the available files on server, download an specific file, etc.
My question is: if that object is created after pressing a button (and calling the function it is linked to) is there any way to return that object? Sure there is but, how and where in the code should it be stored/declared. Here is the code line:
connect(ui.btn_connect,SIGNAL(clicked()),this,SLOT(on_SayConnect()));
How should I call the function "on_SayConnect()" if I want an object to be returned using the connect (SIGNAL/SLOT) syntax? Thank you in advance.
There's no good way to return values using the connect method. If your goal is to have the this object (I don't think you actually gave it a name) send a value/object to other parts of the system, you could have the on_SayConnect slot emit a signal with the desired value. Any other objects that need to receive that value should implement and connect the proper slot to do so.

Hold COM-reference in .net web service

I have tried to make a webservice interface to a state-holding COM component.
The webservice basically contains operations Start, Shutdown and GetCurrentState.
Start creates a COM component, Stop releases.
And GetCurrentState retrieves information from the COM component.
It seemed an easy thing, but after a day it still refuses to work.
I have tried storing the COM-reference as a member variable in the C# object. The object is constantly re-created.
Then I tried to store the COM-reference in the Session object. But still, something is still wrong.
Anyone know how one should store COM reference which should stay alive inside webservices?
/L
Assuming you are using ASMX here, and not WCF where you could control the life time little bit differently, each time a request comes in the class that services the request is recreated. This is the standard behaviour for ASMX.
What you need to do is store the COM object either inside the Cache[] or Application[] collections. It may still get destroyed when the worker pool is recycled. Some code like this is what you need:
public FooClass GetFooClassInstance()
{
FooClass instance = (FooClass)this.Context.Application["FooClassInstance"];
if (instance == null)
{
instance = new FooClass(); // Creates the RCW.
this.Context.Application["FooClassInstance"] = instance;
}
return instance;
}
The FooClass is the runtime callable wrapper for your COM object. The Application object contents is retained between requests. One thing you do need to watch out for is the threading model that the COM component is using as some can cause performance problems because they marshal calls onto a single thread.
Web service by its nature is stateless. Try creating Windows service and using Web service to control it. Start method would start Windows service and that service would instantiate COM-component. GetCurrentState method would communicate with the service and grab COM reference.
Another approach is to make your COM component COM+ accessible:
Open Administrative Tools -> Component Services.
Open COM+ Applications node.
Create new application. Select "Create an empty application" in the first wizard step. Type application name and select "Server application" option in the next step.
Create new component. Select "Install new component(s)" in the wizard. Locate and select your COM dll.
Go to component properties and enable object pooling. Set minimum and maximum pool size to 1. This will make your component a singleton.